黑马程序员技术交流社区
标题:
内部类的问题
[打印本页]
作者:
王小聪
时间:
2012-12-23 19:03
标题:
内部类的问题
class Outer {
public void fun() {
System.out.println("Outer");
}
class Inner {
public void fun() {
System.out.println("Inner");
}
public void test() {
Outer.this.fun();
// fun();
// this.fun();
}
}
public void test() {
Inner inner = new Inner();
inner.test();
}
}
public class Test {
public static void main(String[] args) {
Outer o = new Outer();
o.test();
}
}
这段代码代表的是什么啊?最后的o.test()是什么啊?
作者:
高会仁
时间:
2012-12-23 19:16
内部类问题,外部类的test()方法中有Inner inner = new Inner(),实例化了一个内部类对象,
inner.test()调用了内部类的test()方法,然后找到这个内部类test()方法,
里面是Outer.this.fun(),这个就是调用的外部类的fun()方法而不是内部类的fun()方法,所以打印结果为“Outer”
作者:
王进亮
时间:
2012-12-23 21:07
Outer o = new Outer();实例化外部类,
o.test();调用外部类的test方法,在些方法中(Inner inner = new Inner();)又实例化了内部类
然后调用(inner.test();)内部类的方法,在些方法中(Outer.this.fun();)外部类的fun方法,所以打印的是Outer
作者:
张综
时间:
2012-12-23 22:20
这段代码分为以下几部分看。
作者:
张综
时间:
2012-12-23 22:29
呃。刚才发错了。重新发下:
这段代码分为以下几部分看。
1.你首先创建了一个外部类。写了一个方法,打印outer。你在外部类里创建了一个内部类,并且写了一个方法,打印inner;然后又写了一个方法test();方法体是用外部类调用外部类的fun()方法,即调用这个方法打印Outer。这里的this指的是外部类的Fun()方法;
2你又在外部类里写了一个方法test()。你在这个方法里创建内部类对象。并且调用内部类的test()方法。
3你写了一个主函数类。创建外部类对象。调用外部类的test()方法。这时候创建内部类对象。调用内部类的test()方法。这时候就会执行Outer.this.fun()这个语句。这时候就会调用外部类的Fun方法。所以最后打印Outer。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2