静态内部类不能直接访问外部类的非静态成员,但可以通过 new 外部类().成员 的方式访问
package imooc_2.encapsulation.lnnerclass;
public class StaticInnerClass {
private static int Score=84;
private int Age=20;
//静态内部类
public static class Inner{
private int sum=10;
int a=21;
public void show(){
StaticInnerClass staticInnerClass=new StaticInnerClass();
System.out.println("静态内部类调用外部类的静态成员变量"+Score);
System.out.println("静态内部类调用外类的成员变量"+new StaticInnerClass().Age);
System.out.println("静态内部类调用外类的成员变量"+staticInnerClass.Age);
System.out.println("静态内部类调用内部类中的静态成员变量"+sum);
System.out.println("静态内部类调用内部类中的成员变量"+a);
}
}
public static void main(String[] args) {
Inner inner=new Inner();//静态内部类能直接创建
inner.show();
}
}
其实很简单的道理,就是static这个关键字的用法。
public static class ,不能访问 public class。但如果非要访问的话,就通过创建新的对象来引用进行操作。
内部类 对象名 = new 内部类();//这里创建了外部类的对象,就可以进行访问了。