public class InnerClass {
public static void main(String[] args) {
int m=OuterA.InnerA.i;
OuterA.InnerA innera=new OuterA.InnerA();//静态内部类对象不依赖于外部类对象的存在
innera.m1();
OuterA out=new OuterA();
// OuterA.InnerB inn=new OuterA.InnerB();//静态内部类和成员内部类的区别
OuterA.InnerB innb=out.new InnerB("san");//成员内部类对象依赖于外部类对象的存在
//上面那条语句编译器编译时 相当于将 out对象当做参数通过构造方法传进InnerB类中
// OuterA.InnerB innb2=new InnerB("san",out);
innb.m2();
}
}
class OuterA
{
private String name1="hello";
private static String name2="haha";
//静态内部类,相当于一个静态成员
public static class InnerA{
public static int i=9;
public void m1()
{
// System.out.println(name1);//得出静态内部类只能访问外部类的静态成员
System.out.println(name2);
}
}
public class InnerB
{
InnerB(String name )
{
}
public void m2()
{
System.out.println(OuterA.this.name1);//在成员内部类中访问外部类的当前对象
System.out.println(name2);
System.out.println(name2);
}
}
}
|