/* 外部类*/
public class Outer {
private String zhou = "zhou";
public void out(){
System.out.println("这是外部类的方法");
}
/**
* 内部类*/
public class Inner{
public void in(){
System.out.println("这是内部类的方法");
}
public void getID(){//通过此方法访问外部类的私有属性
System.out.println(zhou);
}
}
public static class Inner1{
public void in(){
System.out.println("这是静态内部类的方法");
}
/*public void getID(){
System.out.println(zhou);
}*///此处会报错! 静态内部类不能访问外部类的私有属性
//由于静态的数据类型是先加载的,内部类加载时,外部类的私有属性还没有加载
}
public static void main(String[] args) {
Outer outer = new Outer();//外部类的实例化
outer.out();//调用外部类方法
outer.new Inner();//通过外部类来对内部类的实例化
outer.new Inner().in();//调用内部类的方法
outer.new Inner().getID();//内部类可以访问外部类的私有属性
outer.new Inner().in();//静态内部类的实例化及方法调用
}
}
静态内部类不能访问外部类的私有属性,由于静态内部类先加载属于静态属性,先加载,而外部类的私有属性为后面加载。