为什么需要内部类(摘抄Java编程思想4)

一般来说,内部类继承自某个类或实现某个接口,内部类的代码操作创建它的外围类的对象,所以可以认为内部类提供了某种进入其外围类的窗口。 内部类必须要回答的一个问题是:如果只需要一个对接口的引用,为什么不通过外围类实现那个接口呢?答案是:如果这能满足需求,那么就应该这样做。那么内部类实现一个接口与外围类实现这个接口有什么区别呢?答案是:后这不是总能享用到接口带来的方便,有时需要用到接口的实现。所以,使用内部类最吸引人的原因是:每个内部类都能独自地继承一个接口的实现,所以无论外围类是否已经继承了某个接口的实现,对于内部类都没有影响。 如果没有内部类提供的,可以继承多个具体的或抽象的类的呢能力,一些设计与编程问题就很难解决。从这个角度看,内部类使得多重继承的解决方案变得完整。接口解决了不问问题,而内部类有效地实现了多重继承。也就是所,内部类允许继承多个非接口类型(类或抽象类)。 如果不需要解决“多重继承”的问题,那么自然是可以用别的方式编码,而不需要使用内部类,但如果使用了内部类,还可以获得其他一些特性: 1)内部类可以有多个实例,每个实例都有自己的状态信息,并且与其外围类对象的信息相互独立。 2)在单个外围类中,可以让多个内部类以不同的方式实现同一个接口,或继承同一个类。 3)创建内部类对象的时候并不依赖于外围对象的创建。 4)内部类并没有令人迷惑的“is-a”关系,它是一个独立的实体。

转载于:https://my.oschina.net/u/2258281/blog/886514

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值