final 关键字
final关键字 修饰 类, 表示该类 不能被继承;
final关键字 修饰 成员变量,表示该成员变量必须是常量;
final关键字 修饰 方法 , 表示该方法不能被重写;
演示1:final修饰 类
public final class Dad { // 定义一个Dad类 }
public class Son extends Dad { // 定义一个Son类 继承 Dad 类
// 报错The type Son cannot subclass the final class Dad
}
Son类 继承 Dad类,
发生报错: The type Son cannot subclass the final class Dad
报错原因: 一个类 不能继承 一个被 final 修饰的 类
即,final关键字修饰一个类,表示该类不能被继承
演示2:final修饰 成员变量
public final class Dad { private final int num; // 报错:The blank final field num may not have been initialized }
报错原因: 成员变量 num 没有初始化赋值
修改代码:给 num变量 赋值
public final class Dad { private final int NUM = 0; // 编译通过 }
final关键字 修饰 成员变量,则该变量在声明的同时必须初始化赋值。
即,final关键字修饰成员变量,表示该变量必须是常量;
(根据标识符命名规范:常量名全部使用大写)
演示3 final修饰 方法
public class Dad { public final void show() { // 父类Dad类 的show()方法被final修饰 System.out.println("我是show()方法啊...."); } }
public class Son extends Dad {
@Override // 重写父类Dad中的show()方法 public void show() {
// 报错:Cannot override the final method from Dad System.out.println("我是重写之后的show()方法...."); } }
报错原因:子类不能 重写 父类中被final修饰的方法
即,被final修饰的方法,表示不能被重写