java内部类回顾之一般内部类实现多继承和封装性

本文的标题可能有一定的误导性,并不是说一般内部类就能实现多继承,显然这是不可能的。真正的意思是通过多继承来实现我们期望中的多继承的功能。

这里就拿人类来举例吧,人(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的,那么就只有包含此内部类的外部类能够访问他。这样在我们希望只给某一个类提供服务,拒绝其它不相干的的类的访问的时候,我们可以通过内部类来达到目的。



你可能感兴趣的:(java)