成员内部类、静态内部类、局部内部类、匿名内部类都能够访问外部类中的所有方法。
成员内部类、局部内部类、匿名内部类都能够访问外部类中的所有属性,静态内部类只能访问外部类中的静态属性。
外部类能够访问成员内部类和静态内部类中的所有属性和方法。
外部类不能访问局部内部类。
实验代码:
public class Main {
private int a = 9;
public int b = 10;
private static int c = 11;
MemberInnderClass memberInnderClass;
StaticInnerClass staticClass;
//不能访问成员内部类
// PartInnerClass partInnerClass;
public void method1() {
int aa = memberInnderClass.aa;
int bb = staticClass.cc;
//局部内部类
class PartInnerClass {
int aa = a;
int cc = c;
public void method() {
new Main().method3();
}
}
//匿名内部类
method2(new MemberInnderClass() {
int aa = a;
int cc = c;
@Override
public void method() {
super.method();
new Main().method3();
}
});
}
public static void method2(MemberInnderClass memberInnderClass) {
}
private void method3() {
}
public static void method4() {
}
//成员内部类
class MemberInnderClass {
private int aa = a;
int cc = c;
public void method() {
}
}
//静态内部类
static class StaticInnerClass {
Main main = new Main();
//不能访问非静态成员变量
// int aa = a;
private int cc = c;
public void method() {
main.method1();
Main.method4();
main.method3();
}
}
}