final class -> 不能被继承
final void m1() -> 不能被重写
final int a -> 不能被改变, 常量, 必须初始化
成员变量a, 必须在创建对象时初始化
final static int B -> 必须初始化, 静态常量
类加载时, 必须初始化完成
常量: 固定几个选项时, 通常类型都是int
将选项起个名字-变量, final 变量
如果常量要在外部无关类中使用, 通常为了方便, 都会定义成static
父类 a = new 子类();
接口 b = new 接口实现类();
a.m1(): 说明m1声明在父类中
子类重写了m1方法
编译时类型: 只在编译时有效
泛型
a 想要调用子类特有的方法, 需要强制转换
可能会出现 ClassCastException
解决方式, 提前使用 a instanceof 子类
意义: 扩展方法的功能
内部类:
成员内部类 -> 类中
public class Outer{
public class Inner{
}
}
Outer.Inner in = new Outer().new Inner()
局部内部类 -> 方法中
public void m1() {
int a = 10;
class Inner {
// 使用a, a必须是final
}
}
只在方法中可以使用, 一次性
匿名内部类
接口/抽象类 b = new 接口/抽象类() {
// 真正的类, 重写抽象方法
}
只能创建一次对象
静态内部类 -> 属于类的
public class Outer{
public static class Inner{
}
}
Outer.Inner in = new Outer.Inner()