1. 程式人生 > >內部類實現多繼承和封裝性

內部類實現多繼承和封裝性

本文的標題可能有一定的誤導性,並不是說一般內部類就能實現多繼承,顯然這是不可能的。真正的意思是通過多繼承來實現我們期望中的多繼承的功能。

這裡就拿人類來舉例吧,人(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的,那麼就只有包含此內部類的外部類能夠訪問他。這樣在我們希望只給某一個類提供服務,拒絕其它不相干的的類的訪問的時候,我們可以通過內部類來達到目的。