1.内部类
1)成员内部类:类定义在另一个类(外部类)内
public class A{
public class B{
public void visit(){ ...}
}
}
内部类可以直接访问外部类的所有属性和方法(包括private),也可以修改属性的值。
2)静态内部类
public class A{
int m = 1;
public static class B{
public void visit(){ ...} //无法访问外部类普通属性和方法
}
}
静态内部类用static修饰,无法访问外部类普通属性和方法,因为它们的隶属于对象的,而静态内部类早于对象存在。静态内部类可以访问外部类的static属性和方法。
3)局部内部类
定义在成员方法里
public class A{
public void run(){
class B{
}
}
}
4)匿名内部类
实例没有名字,没有保存到变量中
new A().run();
5)一个文件中可以有多个类,但只能有一个内部类
public class A{
}
class B{ //不能用修饰符public
}
class C{
}