黑马程序员技术交流社区

标题: 哪位大哥能跟我说说在什么情况下用内部类? [打印本页]

作者: wuchuang1992    时间: 2013-11-4 19:13
标题: 哪位大哥能跟我说说在什么情况下用内部类?
有点纠结,也不知道自己内部类掌握到什么程度,听说面试的时候还挺重要,那位大牛能给我讲讲呢?
作者: Clare0621    时间: 2013-11-4 19:39
说实话,内部类是很有技巧性的,作为初学者,我觉得只要知道其基本概念和语法,根据老师所讲做一些基础练习就行了。要想懂得其精髓,那不得去进行实际开发,等到真正要用的时候自然就会用了。现在最关键的还是基础打牢!!谢谢!
作者: 零下五度的水    时间: 2013-11-4 19:44
感觉就只有匿名内部类有点用:
Thread t = new Thread ( new Runnable() {
    @Override
    public void run() {...}
}
属于碰到一个抽象类或者接口又找不着合适的子类或者实现类来实例化,就顺手在代码里写个子类或者实现
作者: zdrain    时间: 2013-11-4 21:37
内部类分为普通内部类和局部内部类
普通内部类就是定义在类成员的位置上,可以被成员修饰符修饰,可以直接享用外部类的成员,非静态调用方法 外部类.内部类 变量名 = new 外部类对象.内部类对象
外部类要使用内部类成员需要建立内部类对象使用
局部内部类是定义在外部类的局部位置上,一般定义在成员函数内,局部内部类注意的是要用到局部变量时必须由final修饰,其他跟普通内部类相同
还有就是内部类成员要是静态的话 内部类也是静态的
作者: 冯超    时间: 2013-11-5 08:49
做事件监听的时候需要 因为要共享一个类中的属性
作者: 胡志翔    时间: 2013-11-5 08:59

内部类访问特点:
1、内部类可以直接访问外部类中的成员,因为内部类持有外部类的引用,格式为:外部类名.this
2、外部类要想访问内部类的成员,必须创建对象访问。

内部类的访问格式:
1、当内部类定义在外部类的成员位置,而且非私有,则可以在其他外部类中直接建立内部类对象
      格式:外部类名.内部类名  变量名 = new 外部类对象.内部类对象
       如:Outer.Inner in = new Outer().new Inner()
2、当内部类在外部类成员位置,且被static修饰时
     ①外部其他类可直接访问静态内部类的非静态成员
                          格式:new 外部类名.内部类名().内部类成员
                          如:new Outer.Inner().function();
     ②外部其他类可直接访问静态内部类的静态成员
                          格式:new 外部类名.内部类名.内部类成员
                          如:new Outer.Inner.function();

什么使用时候内部类呢?
假如有A类和B类,A类想直接访问B类的成员,B类访问A类成员的时候,需要创建A类对象进行访问,这个时候,就可以把A类定义为B类的内部类。
作者: 松毛    时间: 2013-11-5 11:06
当描述事物时,事物的内部还有事物,该事物用内部类来描述。因为内部事物在使用外部事物的内容。(最好将内部类封装在外部类中,对外提供方法来访问)
作者: 黄小贝    时间: 2013-11-5 14:52
看我对你多好~~我把我唯一一次回答加了两点技术分的帖子给你翻出来了,看这个帖子的 6 楼~~

不谢~~

http://bbs.itheima.com/forum.php ... mp;page=1#pid273998




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2