黑马程序员技术交流社区
标题:
【基础】内部类是如何让java实现多继承的
[打印本页]
作者:
龚首道
时间:
2013-8-11 13:32
标题:
【基础】内部类是如何让java实现多继承的
本帖最后由 龚首道 于 2013-8-14 16:41 编辑
如题。
内部类使得多重继承
的解决方案变得完整。接口解决了部分问题,而内部类有效地实现了多重继承,那么内部类是如何实现多继承的呢?
作者:
longlangcx
时间:
2013-8-11 16:39
本帖最后由 longlangcx 于 2013-8-11 16:58 编辑
首先说下“
接口解决了部分问题
”的意义。
何为部分呢?
接口是通过多实现的方式来达到多重继承的效果的。即让一个类可以在extends一个ClassA的同时还能implements InterfaceB,InterfaceC。即只能继承一个类,实现多个接口。
但是想要做到类似extends ClassA. ClassB, ClassC的效果怎么办呢?没办法,用接口做不到。这就是接口的局限性。也就是所谓的接口只解决了部分问题。
而内部类有效地实现了多重继承
上面接口没有解决的问题,用内部类是怎么解决的呢?是用这种方式解决的:
class A{}
abstract class B{}
abstract class C{}
class D extends A{
B getB(){
return new B(){};
}
C getC(){
return new C(){};
}
}
复制代码
D类继承了A类的同时,还使用内部类继承了B抽象类和C抽象类。
这和直接使用普通类来继承B类C类,然后通过组合的方式放入D类中有什么区别呢?
区别在于:
内部类与外围类具有特殊关系,二者可以进行直接互访。
与此同时,内部类对外是不可见的。
作者:
龚首道
时间:
2013-8-11 16:43
longlangcx 发表于 2013-8-11 16:39
首先说下“接口解决了部分问题”的意义。
何为部分呢?
恩恩,“接口解决了部分问题”解释的很好,我理解了。。。请继续
作者:
以防万一
时间:
2013-8-13 22:18
亲,如问题已解决请将分类的未解决改为已解决。
以后的问题贴也要及时更改分类哦~
保持队形,谢谢合作
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2