黑马程序员技术交流社区
标题:
内部类的一些问题
[打印本页]
作者:
Sasson
时间:
2013-11-8 23:33
标题:
内部类的一些问题
class Outer {
String name = "张三";
class Inner {
String name = "李四";
Inner() {
}
void method() {
String name = "王五";
System.out.println(name);
}
}
}
class Test_Inner {
public static void main(String[] args) {
Outer.Inner oi = new Outer().new Inner();
oi.method();
}
}
复制代码
------------------------------------------------------------------
怎样才能输出张三?李四?
作者:
魏-玉-彪
时间:
2013-11-8 23:49
本帖最后由 魏-玉-彪 于 2013-11-9 21:19 编辑
class Outer {
String name = "张三";
class Inner {
String name1 = "李四";
Inner() {
}
void method() {
String name2 = "王五";
System.out.println(name);
System.out.println(name1);
System.out.println(this.name2);
}
}
}
class Test_Inner {
public static void main(String[] args) {
Outer.Inner oi = new Outer().new Inner();
oi.method();
}
}
复制代码
将三层变量名分别命名,否则会产生
变量隐藏(覆盖).
而且这样编程没有实际意义
作者:
Sasson
时间:
2013-11-8 23:54
class Outer {
String name = "张三";
class Inner {
String name = "李四";
Inner() {
}
void method() {
String name = "王五";
System.out.println(name);
System.out.println(this.name);
System.out.println(Outer.this.name);
}
}
}
class Test_Inner {
public static void main(String[] args) {
Outer.Inner oi = new Outer().new Inner();
oi.method();
}
}
复制代码
已经解决了 就是想研究一下 满足下好齐心
谢谢了
作者:
起猿
时间:
2013-11-9 00:38
哈哈,解决了我就不写代码了,不过二楼的说法有些错误,不是产生变量覆盖,是同名变量中,局部变量隐藏成员变量。调用过程中,如果不明确调用。会产生“就近原则”的现象,先从本方法中找,找不到在去方法外,类内的成员区域找。等等。。
作者:
The_Wizard
时间:
2013-11-9 08:40
System.out.println(this.name);
System.out.println(Outer.this.name);
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2