黑马程序员技术交流社区
标题:
为什么需要内部类?
[打印本页]
作者:
forjunjian
时间:
2015-9-4 23:12
标题:
为什么需要内部类?
我想内部类的出现不可能仅仅是为了少个引用对象这么简单,更深的愿意是啥子
作者:
lion_good
时间:
2015-9-5 21:00
可以共享宿主类之间的变量,常量,方法等
作者:
asinzuo
时间:
2015-9-5 22:23
1、内部类的唯一好处就是可以访问外部类的私有属性;而外部类要访问内部类中的成员必须要建立内部类的对象。
2、内部类定义在方法中时,可以访问外部类的成员,但是只能访问方法中被final修饰的参数。
3、外部访问:外部类.内部类 内部类对象 = new 外部类().new 内部类();//外部类对象.内部类对象
4、当内部类中定义了静态成员,该内部类必须是static的。被static声明的内部类变成了外部类,但是只能访问外部类中静态成员。(只能在局部访问局部内部类)(静态是成员修饰符,不能修饰局部。所以局部内部类不能定义静态成员。)
(5、内部类可以被私有修饰,内部类在外部类成员位置时。)(外部类绝对不能被私有,没有这种定义)
方法中的内部类能不能访问方法中的局部变量,为什么?
方法中声明内部类,目的只是由外部类来控制内部类的可见性。将一个类放到方法中,并不是限定了这个类的使用范围只是这个方法中。
在编译后,还是会出现外部类、内部类class文件,这就说明内部类是一个独立的个体,它们是单独的两个类,各有各的成员。
那么方法上的内部类当然不能访问方法中的局部变量了,在一个类里面可以通过该类的引用访问该类的成员,但是方法中的局部变量作用范围只是在方法内,无法访问这个变量。
加了final后,编译时内部类会把这个值或者引用复制一份到自己类中,所以就形成了可以访问局部被final修饰的变量的现象。
作者:
kingxiao
时间:
2015-9-5 22:43
简单方便,一次调用
作者:
hmhm123
时间:
2018-3-13 11:22
java引入内部类是为了更好的处理一些情况
1、假如外部类实现了runnable接口,可以通过多个内部类返回不同的Runnable引用,实现多种不同的run()方法。
2、内部类可以帮助java解决多继承的问题
3、内部类需要的时候才会被创建,不会增加外部类的负担
4、内部类可以更好的封装,不允许同一个保重的其他类访问该类
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2