内部类的访问规则:
1,内部类可以直接访问外部类中的成员,包括私有。
之所以可以直接访问外部类中的成员,是因为内部类中持有了一个外部类的引用,格式 外部类名.this
2,外部类要访问内部类,必须建立内部类对象。
下面贴出毕老师的代码
class Outer
{
private int x = 3;
class Inner//内部类
{
int x = 4;
void function()
{
int x = 6;
System.out.println("innner :"+Outer.this.x);
此时输出3,如果去掉Outer输出4,如果把this也去掉,输出6,一切源于毕老师的话,本类中没有再去外面找。仔细推敲推敲挺有意思的 }
}
/**/
void method()
{
Inner in = new Inner();
in.function();
}
}
class InnerClassDemo
{
public static void main(String[] args)
{
Outer out = new Outer();
out.method();
//直接访问内部类中的成员。
// Outer.Inner in = new Outer().new Inner();
// in.function();
}
}
|