Java中允许将一个类A声明在另一个类B中,则类A就是内部类,类B称为外部类
- 内部类的分类:成员内部类(静态、非静态) vs 局部内部类(方法内、代码块内、构造器内)
成员内部类:
- 一方面,作为外部类的成员:
- 调用外部类的结构
- 可以被static修饰
可以被4种不同的权限修饰
3.1 另一方面,作为一个类:
- 类内可以定义属性、方法、构造器等
- 可以被final修饰,表示此类不能被继承。言外之意,不使用final,就可以被继承
- 可以被abstract修饰
关注如下的3个问题
- 4.1 如何实例化成员内部类的对象
- 4.2 如何在成员内部类中区分调用外部类的结构
如果一个类定义在另一个类的内部,这个类就是Inner Class:
class Outer {
private String name;
Outer(String name) {
this.name = name;
}
class Inner {
void hello() {
System.out.println("Hello, " + Outer.this.name);
}
}