内部类
内部类
#内部类
内部类
|-- 非静态内部类 (成员内部类)
|-- 静态内部类 (类内部类)
|-- 局部内部类
|-- 匿名内部类
内部类被当前外部类的成员, 外部类必须通过new关键值来调用内部类的实例变量或是实例方法
内部类可以直接访问外部类的所有成员
#非静态内部类
-
相当于Outer的成员变量, 可以访问实例变量,实例方法, 但是不能访问类变量
-
通过
new Outer().new Inner()
来调用 -
如果外部类和内部类具有相同的成员变量或方法, 访问外部类的成员变量或方法时, 需要使用
this
关键字
#静态内部类
- 用
static
修饰的内部类, 称为静态内部类, 完全属于外部类本, 不属于外部类某一对象 - 静态内部类可以包括静态成员, 也可以包含非静态成员, 但是在非静态内部类中不可以声明静态成员
- 静态内部类不可以访问外部类的实例成员, 只能访问类成员, 因为是完全独立的两个类
- 内部类被当成外部类成员, 但外部类不能访问内部类的实现细节, 必须通过new关键字访问
- 通过
new Inner.Outer()
来调用
#局部内部类
- 局部内部类就是定义在外部类的方法中, 方法内部类只在该方法内可以用
- 局部内部类不能使用访问控制符和static修饰符, 只能访问
final
关键字修饰符的变量