概述
- final关键字是最终的意思,可以修饰类,变量,成员方法。
- final存在的原因:
由于继承中有一个方法重写的现象,而有时候我们不想让子类去重写父类的方法,这对这种情况 java 就给我们提供了一个关键字: final
特点
- 修饰类:被修饰类不能被继承
- 修饰方法: 被修饰的方法不能被重写
- 修饰变量:被修饰的变量不能被重新赋值,因为这个量其实是一个常量!
final 修饰方法
// 父类
class Father {
public final void show() {
System.out.println("这是一个绝密的东西,请不要随便改动!!!");
}
}
// 子类
class Son extends Father {
// 错误: Son中的show()无法覆盖Father中的show()
public void show() {
System.out.println("这是一堆垃圾!!!!还绝密呢!!!");
}
}
final 修饰类/成员变量
// 父类
// final class Father {}
// 子类
// 错误: 无法从最终Fu进行继承
class Son extends Father {}
class Demo {
// 成员变量
int a = 10;
final int b = 20;
}
class FinalDemo1 {
public static void main(String[] args) {
// 创建A的对象
Demo d = new Demo();
d.a = 20;
System.out.println(d.a);
System.out.println("-----------");
// 错误: 无法为最终变量b分配值
// d.b = 30;
System.out.println(d.b);
System.out.println("-----------");
// 在局部位置定义一个变量,并使用final修饰
final int a = 10;
// 错误: 无法为最终变量a分配值
// a = 20;
System.out.println(a);
}
}
final关键字修饰局部变量
- 基本类型:是值不能被改变
- 引用类型:是地址值不能被改变