对于普通内部类和静态内部类 1.静态内部类相对于外部类是独立存在的 2.对于普通内部类是作为外部类的一部分存在的。 调用关系如下: //1.普通内部类可以直接调用外部类的普通属性,普通内部类的方法也可以直接调用外部类的属性。 //2.普通内部类不可以调用外部类的普通方法,普通内部类的方法可以直接调用外部类的方法。 //3.普通内部类调用其他普通内部通过创建其他内部类对象的方式。 //4.普通内部类调用其他静态内部通过创建其他内部类对象的方式。 //5.静态内部类可以直接调用外部类的静态属性,普静态内部类的方法也可以直接调用外部类的静态属性和静态方法。 //6.静态内部类不可以调用外部类的静态方法,静态内部类不可以调用外部类的普通方法。
代码实现:
public class InnerOutClass {
public int out1=1;//外部类的普通属性
// public static int outs=staticout;不能
public static int staticout=1;//外部类的静态属性
//普通类A
public class A{
//内部类AA
int i=out1;//直接调用外部类的普通属性
InnerOutClass a=new InnerOutClass();
// a.D();//不可以调用
//D();//不可以调用
B b=new B();//调用其它内部类
// b.BB();不能
public void AA(){
int aout=out1;
System.out.println("AA i:"+i);
System.out.println("AA aout:"+aout);
System.out.print("AA :");
D();
}
}
//普通类B(其他类)
public class B{
public void BB(){
System.out.println("BB");
}
}
//静态类C
public static class C{
// int ccc=out1; 不能
public static int cc=staticout;
InnerOutClass c=new InnerOutClass();
// c.D(); 不能
// c.F();不能
F();
public static void CC(){
int s=staticout;
F();
}
}
//外部类的普通方法D
public void D(){
System.out.println("DD");
}
//外部类的静态方法F
public static void F(){
System.out.println("FF");
}
}
729

被折叠的 条评论
为什么被折叠?



