-
什么是内部类?
写在一个类里面的类就叫做内部类 -
什么时候用到内部类?
B类表示的事物是A类的一部分,且B单独存在没有意义。
比如:汽车和发动机,ArrayList和迭代器,人和心脏 -
内部类的访问特点
- 内部类可以直接访问外部类的成员,包括私有
- 外部类要访问内部类的成员,必须创建内部类对象
如图:
- 成员内部类
- 写在成员位置的,属于外部类的成员,如图
- 成员内部类可以被一些修饰符所修饰,比如:private,默认/空着不写,protected,public,static等,并遵守对应的范围规则
- 在成员内部类里面,JDK16以前不能定义静态变量,JDK16开始才可以定义静态变量
- 获取成员内部类对象的两种方式:
a. 在外部类中编写方法,通过返回值对外提供内部类对象
b. 直接创建
格式:外部类名. 内部类名 对象名 = new 外部类名( ). new 内部类名( ) ;
范例:Outer. Inner oi = new Outer( ). new Inner( ) ;
注意:当用private修饰内部类时,若外界想创建内部类对象,直接创建是不行的,有两种方法:
a. 更改private修饰符为public
b. 在外部类中编写方法,通过返回值对外提供内部类对象。但此时,外界(其他外部类)无法通过内部类名来创建内部类对象名,从而无法接收内部类对象地址,此时可以通过内部类的父类(多态)来创建并接收,也可以不创建对象名并接收,直接用链式编程使用即可。