本帖最后由 ζ_____________ 于 2014-9-27 16:11 编辑
我将代码这样修改一下你看下能看懂吗?
class OuterClass
{
private int num = 5445; //OuterClass中的成员变量 num;
void method() //OuterClass中的成员函数 method();
{
System.out.println("Method2");
}
class InnerClass //OuterClass中的(成员类)内部类InnerClass;
{
void function() //InnerClass中的成员函数 function();
{
method(); //InnerClass中的成员函数中所调用的外部类OuterClass中的成员函数method(),默认在InnerClass中都持有"外部类.this".这就是所谓的在内部类中调用外部成员.其实也可以写成这样.
//OuterClass.this.method();
System.out.println(OuterClass.this.num); //内部类访问外部成员变量.和上面相同都是持有着 "外部类.this";
}
}
}
public class Test6
{
public static void main(String[] args)
{
OuterClass.InnerClass in = new OuterClass().new InnerClass(); //你的例子中是在外部类中直接拿到的内部类中的InnerClass的指向,但是在其他类中 必须要创建 外部类的对象再创建内部类的对象才能拿到内部类中的引用. (内部类为静态的话除外)
in.function(); //调用内部类中的function()函数.
}
}
- class OuterClass
- {
- private int num = 5445;//定义一个私有的成员变量
- void method()
- {
- System.out.println("Method2");
- }
- class InnerClass
- {
- void function()
- {
- OuterClass.this.method();
- System.out.println(OuterClass.this.num);//内部类访问外部成员变量.
- }
- }
- }
- public class Test6
- {
- public static void main(String[] args)
- {
- OuterClass.InnerClass in = new OuterClass().new InnerClass();
- in.function();
- }
- }
复制代码
|