- 成员内部类
- 非静态内部类
- 静态内部类
- 匿名内部类
- 局部类部类
内部类提供了更好的封装,只能让外部类直接访问,不允许同一个包中的其他类直接访问。
内部类可以直接访问外部类的私有属性,内部类被当成其外部类的成员。但外部类不能访问内部类的内部属性。
非静态内部类
- 非静态内部类对象必须寄存在一个外部类对象里。因此,如果有一个非静态内部类对象那么一定存在对应的外部类对象。非静态内部类对象单独属于外部类的某个对象。
- 非静态内部类可以直接访问外部类的成员,但是外部类不能直接访问非静态内部类成员
- 3.非静态内部类不能有静态方法、静态属性和静态初始化块
访问成员变量方法:
- 访问内部类属性: this.变量名。
- 访问外部类属性:外部类名.this.变量名。
创建对象:
静态内部类
- 静态内部类可以访问外部类的静态成员,不能访问外部类的普通成员。
- 静态内部类看做外部类的一个静态成员。
访问成员变量方法:
只能访问static成员变量
创建对象:
new外部类名.内部类名() 来创建内部类对象。
匿名内部类
这个类只用一次,后面再也不用了。。。
其中A是接口,接口的实现类直接写进去了。。。(以往都是单独写一个接口实现类)
局部内部类
方法中定义的内部类
定义在方法内部的,作用域只限于本方法,称为局部内部类。在实际开发中用的很少