final关键字
1. 前言
final作为java核心关键字之一,其重要性不言而喻。在Java中,final关键字可以用来修饰类、方法和变量。
2. final作用场景
final类
定义:当用final修饰一个类时,表明这个类不能被继承。也就是说,如果你不想一个类被继承时(如String类),就可以用final进行修饰。要注意final类中的所有成员方法都会被隐式地指定为final方法(来源:https://www.cnblogs.com/dolphin0520/p/3736238.html,个人认为一个无法被继承的类,其方法自然是无法被重写的,此处涉及到知识点:final修饰的方法是无法被重写的)。
应用场景:从安全性考虑,不希望此类被继承,不希望方法被重写。
final方法
定义:当用final修饰一个方法时,此方法是不能被重写的(@override);如果我们用final修饰方法,假如方法所属的类被继承,方法将不能在子类中被重写。
应用场景:禁止继承的类修改此方法行为,可将方法定义为final。
PS:类中所有的private方法都隐式的指定为final的,private修饰的方法,继承时也是不可被重写的。
final变量
对于一个final变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象,也就是不可更改其内存中的引用地址。
final定义的基本数据类型变量是不可被重新赋值的。
final 定义的成员变量不能被重新指向新的引用,但是可以修改其数据,如list数组,虽然不能被指向新的引用对象,但是可add数据。