为什么要使用内部类

399 篇文章 12 订阅
143 篇文章 1 订阅

内部类的那些特性就是啊, 其他类不可见,可以访问当前类的属性及方法。  仅供嵌套类访问的一些属性,方法写内部类,减少了代码量!

因为有时候用内部类(特别是匿名内部类)可以少写很多代码因为有时候用内部类(特别是匿名内部类)可以少写很多代码

1.有一些类的变量,它只希望被特定的类访问,不想把变量设成public,而内部类可以调用外部类的所有信息,包括私有的。
2.对类的封装,隐藏内部类的代码实现。只有通过外部类得到想到的数据。

内部类实际上就是由一个类扮演了特定的角色。例如,对于成员内部类来说,其就扮演了成员的角色,局部内部类则扮演了局部的角色,而在内部类里面则和在其他普通类里面一样。
从内部类里面来看,其就是一个类,而从内部类外面来看,其则是外部类的某种组成部分。

第一:内部类可以访问外围类的 私有数据,何其方便。。

第二:当然是内部类对其他类隐藏不可见

第三 :回调时  使用内部类可以省略大量的代码

好处:
1 方便。内部类可以访问外部类的所有属性和方法(包括private的)
2 隐藏。便于隐藏某些“专用类”,如某个界面的监听器类,或某些容器的底层数据结构(如HashMap中的Entry)。
  这些类只服务于某个特定的类,不需要外部的任何类知道该信息。隐藏能减少不必要的信息量。

3 便捷。如写Swing界面的事件监听,驱动时,可减少其当做外部类编写时的很多参数传递。其实也是方便。
4 效率。减少了类与类之间交互,少创建了一些对象。当然,这种效率的提升时微不足道的,甚至没有也是可能的。
5 某些情况下使程序变得优雅。

内部类有好处,但与此对应,缺点貌似更多。只宜在一些特殊的场合应用。
1 难以阅读。类中还有类,就像怀胎的女人,你一眼看去,个头有些大。便知道此中不简单。
2 类与类之间耦合度很高,难以扩展和维护。
光这2条,其实已够被现代OO大师们打入冷宫了。
但它既然存在,肯定还是有其应用价值的。
常用到内部类的地方:小型GUI程序里监听器类,比较器(Comparator),容器底层专用数据结构等等。

这是Core Java第七版给的3个原因:
1.内部类可以访问外部类定义的变量(数据),即使是private的也可以。言外之意,你不用内部类去访问也可以,但是你在类的外部访问的话,就需要通过申明对象去调用方法,再访问变量。多少有点不直接和低效。
2.内部类可以对于同一个package的类实现隐藏。为什么要隐藏?原因很多,一个直接的原因就是这个类对于别的类不一定有什么用,所以就在类的内部实现了。
3.匿名内部类对于事件处理很有用,而且不用写很多代码,直接且高效。
其实内部类的一个典型特征就是隐藏。之所以隐藏,一个很重要的原因,可以很夸张地说,这个类的作用很有限,不具有很大的公用性,所以就写在一个类的内部,同时还能减少代码量,对于效率也有所提高。

只为了两个字--“简洁”

其实我个人感觉,内部类的用处就是:这个内部类只对外部类有用,定义在该类的内部一是方便使用,另一个是更好的实现了封装。

为什么需要内部类?内部类使得多继承的解决方案变得完美。JAVA中,一般的类只能继承一个类,类可以实现多个接口,但内部类相当于实现了可以继承多个类。为什么这么说呢?无论外围类是否已经继承了类,其每个内部类都能独立继承一个类,你可以在一个类中有多个内部类,每个内部类再继承一个类,那么是不是相当于你的类实现了继承多个类。所以,我的理解是:内部类使得JAVA的多重继承更完善。

作用:
1.每个内部类都能独立的继承一个接口的实现,所以无论外部类是否已经继承了某个(接口的)实现,对于内部类都没有影响。内部类使得多继承的解决方案变得完整,   
2.方便将存在一定逻辑关系的类组织在一起,又可以对外界隐藏。   
3.方便编写事件驱动程序   
4.方便编写线程代码

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值