内部类可以直接访问外部类的成员,包括私有成员
外部类要访问内部类的成员,必须要建立内部类的对象
创建内部类对象格式:
外部类名.内部类名 对象名 = new 外部类型().new 内部类型();
public class External {
private int num = 10;
public void ExternalMethod() {
//外部类名.内部类名 对象名 = new 外部类型().new 内部类型()
External.Internal internal = new External().new Internal();
//内部类名 对象名 = new 内部类型()
Internal internal2 = new Internal();
System.out.println(internal.num);
internal.InternalMethod();
}
public class Internal {
int num = 20;
public void InternalMethod() {
int num = 30;
System.out.println(num);
System.out.println(this.num);
System.out.println(External.this.num);
}
}
}
(1)直接访问:直接创建内部类对象,访问内部类成员
外部类名.内部类名 对象名 = new 外部类型().new 内部类型();
(2)间接访问:在外部类的成员方法里面访问内部类的成员, 然后直接创建外部类对象访问外部类成员方法
public class Test {
public static void main(String[] args) {
//直接访问
External.Internal internal=new External().new Internal();
System.out.println(internal.num);
internal.InternalMethod();
//间接访问
External external=new External();
external.ExternalMethod();
}
}