A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 龚首道 于 2013-8-14 16:41 编辑

如题。
内部类使得多重继承的解决方案变得完整。接口解决了部分问题,而内部类有效地实现了多重继承,那么内部类是如何实现多继承的呢?

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

3 个回复

倒序浏览
本帖最后由 longlangcx 于 2013-8-11 16:58 编辑

首先说下“接口解决了部分问题”的意义。

何为部分呢?
接口是通过多实现的方式来达到多重继承的效果的。即让一个类可以在extends一个ClassA的同时还能implements InterfaceB,InterfaceC。即只能继承一个类,实现多个接口。
但是想要做到类似extends ClassA. ClassB, ClassC的效果怎么办呢?没办法,用接口做不到。这就是接口的局限性。也就是所谓的接口只解决了部分问题。

而内部类有效地实现了多重继承
上面接口没有解决的问题,用内部类是怎么解决的呢?是用这种方式解决的:
  1. class A{}
  2. abstract class B{}
  3. abstract class C{}
  4. class D extends A{
  5.         B getB(){
  6.                 return new B(){};
  7.         }
  8.         C getC(){
  9.                 return new C(){};
  10.         }
  11. }
复制代码
D类继承了A类的同时,还使用内部类继承了B抽象类和C抽象类。

这和直接使用普通类来继承B类C类,然后通过组合的方式放入D类中有什么区别呢?
区别在于:
内部类与外围类具有特殊关系,二者可以进行直接互访。
与此同时,内部类对外是不可见的。

评分

参与人数 1技术分 +1 收起 理由
以防万一 + 1 赞一个!

查看全部评分

回复 使用道具 举报 1 0
longlangcx 发表于 2013-8-11 16:39
首先说下“接口解决了部分问题”的意义。

何为部分呢?

恩恩,“接口解决了部分问题”解释的很好,我理解了。。。请继续
回复 使用道具 举报
亲,如问题已解决请将分类的未解决改为已解决。

以后的问题贴也要及时更改分类哦~


保持队形,谢谢合作
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马