1、定义:内部类就是定义在一个类里面的类,里面的类可以理解成(寄生),外部类可以理解成(宿主)
public class People{
// 内部类
public class Heart{
}
}
2、内部类的使用场景、作用
当一个事物的内部,还有一个部分需要一个完整的结构进行描述,而这个内部的完整的结构又只为外部事物提供服务,那么整个内部的完整结构可以选择使用内部类来设计。【例如:人是一个类,要关于这个人的心脏信息,则在人里面定义一个心脏类】
内部类通常可以方便访问外部类的成员,包括私有的成员。
内部类提供了更好的封装性,内部类本身就可以用 private protectecd 等修饰,封装性可以做更多控制。
内部类的分类
静态内部类[了解]
成员内部类(非静态内部类) [了解]
局部内部类[了解]
匿名内部类(重点)
3、匿名内部类概述[重点]
-
匿名内部类:
- 本质上是一个没有名字的局部内部类,定义在方法中、代码块中、等。
- 作用:方便创建子类对象,最终目的为了简化代码编写。
- 格式:
new 类|抽象类名|或者接口名() { 重写方法; };
如:
Animal a = new Animal() { public void run() { } }; a. run();
不使用匿名内部类简化代码时
-
public class Test { public static void main(String[] args) { Animal a = new Tiger(); a.run(); } } class Tiger extends Animal{ @Override public void run() { System.out.println("老虎跑的快~~~"); } } abstract class Animal{ public abstract void run(); }
使用匿名内部类简化代码时
-
public class Test { public static void main(String[] args) { Animal a = new Animal(){ @Override public void run() { System.out.println("老虎跑的快~~~"); } }; a.run(); } } abstract class Animal{ public abstract void run(); }