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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© forjunjian 中级黑马   /  2015-9-4 23:12  /  1876 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我想内部类的出现不可能仅仅是为了少个引用对象这么简单,更深的愿意是啥子

5 个回复

倒序浏览
可以共享宿主类之间的变量,常量,方法等
回复 使用道具 举报
1、内部类的唯一好处就是可以访问外部类的私有属性;而外部类要访问内部类中的成员必须要建立内部类的对象。
2、内部类定义在方法中时,可以访问外部类的成员,但是只能访问方法中被final修饰的参数。
3、外部访问:外部类.内部类  内部类对象 = new 外部类().new 内部类();//外部类对象.内部类对象
4、当内部类中定义了静态成员,该内部类必须是static的。被static声明的内部类变成了外部类,但是只能访问外部类中静态成员。(只能在局部访问局部内部类)(静态是成员修饰符,不能修饰局部。所以局部内部类不能定义静态成员。)
(5、内部类可以被私有修饰,内部类在外部类成员位置时。)(外部类绝对不能被私有,没有这种定义)
方法中的内部类能不能访问方法中的局部变量,为什么?

方法中声明内部类,目的只是由外部类来控制内部类的可见性。将一个类放到方法中,并不是限定了这个类的使用范围只是这个方法中。
在编译后,还是会出现外部类、内部类class文件,这就说明内部类是一个独立的个体,它们是单独的两个类,各有各的成员。
那么方法上的内部类当然不能访问方法中的局部变量了,在一个类里面可以通过该类的引用访问该类的成员,但是方法中的局部变量作用范围只是在方法内,无法访问这个变量。
加了final后,编译时内部类会把这个值或者引用复制一份到自己类中,所以就形成了可以访问局部被final修饰的变量的现象。

点评

不明白可以继续追问  发表于 2015-9-5 22:26
回复 使用道具 举报
简单方便,一次调用
回复 使用道具 举报
java引入内部类是为了更好的处理一些情况
1、假如外部类实现了runnable接口,可以通过多个内部类返回不同的Runnable引用,实现多种不同的run()方法。
2、内部类可以帮助java解决多继承的问题
3、内部类需要的时候才会被创建,不会增加外部类的负担
4、内部类可以更好的封装,不允许同一个保重的其他类访问该类
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马