由于继承中方法有一个现象:方法重写。所以,父类的功能就会被子类覆盖掉。有时候,我们不想让子类覆盖父类的方法,子类只能调用使用它,针对这种情况,Java提供了一个关键字:final
final是最终的意思。常见的是它可以修饰类,方法和变量。
特点:
- final可以修饰类
被final修饰的类被称为最终类,该类不能被继承。但是最底层的类可以用final修饰,这样做的目的就是为了让它不再有子类。
- final可以修饰方法
被final修饰的方法不能被重写/覆盖/复写
- final可以修饰变量
被final修饰的变量变成常量,只能被赋值一次,不能被重新赋值。
常量:
- 字面值常量
"hello",10,true
- 自定义常量
final int x =10;
final 修饰局部变量的问题:
若局部变量为基本类型:基本类型的值不能发生改变
若局部变量为引用类型:引用类型的地址值不能发生改变,但是,该对象的堆内存的值是可以改变的。
final修饰变量的初始化时机:
- 被final修饰的变量只能被赋值一次
- 在构造方法完毕前。(仅仅针对非静态的变量)