內部類實現多繼承和封裝性
阿新 • • 發佈:2018-12-26
本文的標題可能有一定的誤導性,並不是說一般內部類就能實現多繼承,顯然這是不可能的。真正的意思是通過多繼承來實現我們期望中的多繼承的功能。
這裡就拿人類來舉例吧,人(Person)是一種生物(biology),而且是可移動(Moveable)的生物。我們可以定義如下兩個類:
public class Biology {
public void die(){
System.out.println("生命是有限的,都有死亡的一天");
}
}
package com.pht.inner; public class Moveable { public void move(){ System.out.println("運動是永恆的,靜止是想對的"); } }
人要同時具有以上的兩種特性,那麼就需要定義一個人(Human)如下:
package com.pht.inner; import com.pht.inner.Outer.Inner; public class Human { public void MoveableBiology(){ InnerHuman1 innerHuman1=new InnerHuman1(); InnerHuman2 innerHuman2=new InnerHuman2(); innerHuman2.move(); innerHuman1.die(); } class InnerHuman1 extends Biology{ } class InnerHuman2 extends Moveable{ } }
測試類main如下
package com.pht.inner;
public class Humantest {
public static void main(String[] args) {
// TODO Auto-generated method stub
Human human=new Human();
human.MoveableBiology();
}
}
可以看出,我們是通過內部類分別繼承來實現多繼承的功能,這對於在一些情況下提高程式碼的靈活性和複用是很有幫助的。當然,我們也可以外部類繼承一個模組,剩下的由內部類來繼承來實現。在此不需要贅述。內部類的封裝性:
加入我們把內部類定義為private的,那麼就只有包含此內部類的外部類能夠訪問他。這樣在我們希望只給某一個類提供服務,拒絕其它不相干的的類的訪問的時候,我們可以通過內部類來達到目的。