内部类实现多继承和封装性

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值