黑马程序员技术交流社区
标题:
内部类的问题
[打印本页]
作者:
山西_李帅
时间:
2013-4-21 19:17
标题:
内部类的问题
本帖最后由 山西_李帅 于 2013-4-21 23:10 编辑
当内部类定义在局部位置上时。怎么去访问内部类?
作者:
聖手`书生
时间:
2013-4-21 19:24
还是和内部类定义在成员上一样访问, Outer.Inner() ,只是内部类在局部位置时,访问局部变量必须是final修饰的最终变量。
作者:
刘学明
时间:
2013-4-21 19:29
本帖最后由 刘学明 于 2013-4-21 19:32 编辑
内部类的各种访问规则 请看如下:
1.内部类可以直接访问外部类中的成员,包括私有。格式:外部类名.this。
2.外部类要访问内部类,必须建立内部类对象。
3.当内部类定义在成员位置上,并且是非私有的情况下,可以在外部其他类直接建立内部类对象。格式:外部类名.内部类名 变量名 = 外部类对象.内部类对象。
4.当内部类定义在成员位置上,就可以被成员修饰符所修饰。 比如,private:将内部类在外部类中进行封装。static:内部类就具备static的特性。
5.当内部类被static修饰后,只能直接访问外部类中的static成员。这时出现了访问局限。
6.在外部其他类中,直接访问static内部类的非静态成员,格式为:new Outer.Inner().function();
7.在外部其他类中,直接访问static内部类的静态成员,格式为:Outer.Inner.function();
8.注意:当内部类中定义了静态成员,该内部类必须是static的。 当外部类中的静态方法访问内部类时,内部类也必须是static的。
9.内部类定义在局部时,不可以被成员修饰符修饰。可以直接访问外部类中的成员,因为还持有外部类中的引用。但是不可以访问它所在的局部中的变量,只能访问被final修饰的局部变量。
作者:
山西_李帅
时间:
2013-4-21 20:13
本帖最后由 山西_李帅 于 2013-4-21 23:10 编辑
谢谢,明白了。 我重新看了遍。
当内部类定义在成员位置上时,外部类名.内部类名 引用 = new 外部类名().new内部类名();
当内部类定义在局部位置上时,外部类名.内部类名 引用 = new 外部类名.内部类名();
如果内部类定义在局部位置上,它想要访问局部变量,那么局部变量就必须用final修饰;
作者:
黄玉昆
时间:
2013-4-21 22:15
如果问题解决了,请将问题分类改为“已解决”,谢谢
作者:
gerenvip
时间:
2013-4-21 22:46
本帖最后由 gerenvip 于 2013-4-21 22:47 编辑
外部其他类调用一个类的外部类分为非静态内部类函数,静态内部类非静态函数,静态内部类静态函数
在外部其他类中访问非静态内部类函数访问方式是
Outer.Inner d = new Outer().new Inner(); 用变量d调用内部类的方法
在外部其他类中如何直接访问静态内部类中的非静态成员呢?
Outer.Inner d = new Outer.Inner();用变量d调用内部类的方法
或者new Outer.Inner().function();
在外部其他类中如何直接访问静态内部类中的静态成员呢?
直接访问 Outer.Inner.function();
注意:当内部类中定义了静态成员,该内部类必须是静态的。
当外部类中的静态方法访问内部类时,内部类也必须是静态的。
作者:
飘哥1988
时间:
2013-4-21 22:50
可以直接访问局部成员,但是局部成员要用final修饰。注意:局部内部类不能用private和static修饰
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2