内部类
- 基本介绍
一个类内部又完整的嵌入了另一个类结构。被嵌套的类称为内部类,嵌套的其他类成为外部类。
类的五大成员:[属性、方法、构造器、代码块、内部类]
内部类可以直接访问私有属性。
- 内部类分类
-定义在外部类局部位置上(比如方法内):
- 局部内部类(有类名)
- 匿名内部类(没有类名,重点
- 定义在外部类的成员位置上:
- 成员内部类(没有用static修饰)
- 静态内部类(使用static修饰)
-细节
说明:局部内部类时定义在外部类的局部位置,比如方法中,并且有类名。
- 可以直接访问外部类的所有成员,包含私有的
- 不能添加访问修饰符,因为它的地位就是一个局部变量。局部变量时不能使用修饰符的。但是可以使用final
- 作用域:仅仅在定义它的方法或代码块中。
- 局部内部类--访问--->外部类的成员[访问方式:直接访问]
- 外部类--访问--->局部内部类的成员 访问方式:创建对象,再访问(注意:必须在作用域中)
记住: (1)局部内部类定义在方法中/代码块
(2)作用域在方法体或者代码块中
(3)本质仍然是一个类
6. 外部其他类--不能访问--->局部内部类(因为局部内部类地位是一个局部变量)
7. 如果外部类和局部内部类的成员重合时,默认遵循就近原则,如果想访问外部类的成员,则可以使用(外部类.this.成员)去访问
匿名内部类
- 本质是类
- 内部类
- 该类没有名字
- 同时还是一个对象
说明:匿名内部类定义在外部类的局部位置,如方法
语法 new 类或接口(参数列表){
类体
}
类外访问成员内部类:
outer10.inner10 inner10 = outer10.new inner10();
inner10.say();
类外访问静态成员内部类
outer10.inner10 inner10 = new outer10.inner10();
inner10.say();