这里是对Java基础一些遗漏或者不太熟悉的知识点回顾
1.内部类
内部类:写在一个类里面的类就叫做内部类
什么时候用到内部类?
B类表示的事物是A类的一部分,且B单独存在没有意义,比如:汽车的发动,ArrayList的迭代器,人的心脏等等
前三种内部类了解即可,匿名内部类重点掌握
1.成员内部类
写在成员位置的(即类中,方法外),属于外部类的成员。
1 | public class Car{ //外部类 |
成员内部类要关注:
- 成员内部类的代码如何写?
- 如何创建成员内部类的对象?
- 成员内部类如何获取外部类的成员变量(重名的)?
创建内部类的对象:
- 在外部类编写方法,对外提供内部类的对象
- 直接创建:格式——>
外部类名.内部类名 对象名 = 外部类对象.内部类对象;
成员内部类获取外部类的成员变量:
外部类.this.变量名
一个题目
1 | public class Outer { |
2.静态内部类
是成员内部类的一种特殊情况,当成员内部类用static
修饰时,就是静态内部类
静态内部类只能访问外部类中的静态变量和静态方法,如果想要访问非静态的需要创建对象
创建内部类对象的格式:
外部类名.内部类名 对象名 = new 外部类名.内部类名()
调用非静态方法的格式:
先创建对象,再对象调用
调用静态方法:
外部类名.内部类名.方法名()
3.局部内部类
没啥用,了解一下即可
将内部类定义在方法里面就叫做局部内部类,类似于方法里面的局部变量。
外界是无法直接使用,需要在方法内部创建对象并使用。
该类可以直接访问外部类的成员,也可以访问方法内的局部变量,
4.匿名内部类
本质就是隐藏了名字的内部类
格式:
1 | new 类名或接口名(){ //1.继承/实现.这里是指{}是一个没有名字的类,它继承'类名' 或实现'接口名' 2.方法重写; 3.创建对象 |
使用场景,如果实现类只要使用一次,就可以用匿名内部类简化代码。