内部类是类中的五大成分之一(成员变量、方法、构造器、内部类、代码块),如果一个类定义在另一个类的内部,这个类就是内部类。
场景:当一个类的内部,包含了一个完整的事物,且这个事物没有必要单独设计时,就可以把这个事物设计成内部类。
如:汽车里面有一个发动机,就可以把发动机类定义在汽车类里面
内部类有四种形式:
是类中的一个普通成员,类似普通的成员变量、成员方法。
成员内部类的成分都有:成员变量(普通、静态static成员「JDK16才开始支持」)、成员方法
访问成员内部类的方法:内部类依赖于外部类
Outer.Inner in = new Outer().new Inner();
成员内部类中访问其他成员的特点:
有static修饰的内部类,属于外部类自己持有
静态内部类的成分:类有的它都有
访问静态内部类的方法:由于是静态可以直接用.
调用出来
Outer.Inner in = new Outer.Inner();
静态内部类中访问其他成员的特点:
局部内部类是定义在方法中、代码块中、构造器等执行体中
一种特殊的局部内部类;所谓匿名:指的是不需要为这个类声明名字
编译器遇到匿名内部类:
左边是Java类代码,右边是编译后的class文件
通常作为一个参数传输给方法
可以改写为:直接在调用函数的时候创建匿名内部类
是一种特殊的类:是一种固定数量的类
枚举类中的第一行,只能写一些合法的标识符(名称),多个名称用逗号隔开;
这些名称,本质是常量,每个常量都会记住枚举类的一个对象。
反编译可以看到
在枚举中添加了一个抽象方法
构建对象的时候要重写抽象方法
用来表示一组信息,然后作为参数进行传输。
做信息标志和分类