最终类:当一个类在设计时成为继承树上的最后节点,即我们不希望它能产生子类, 这种就叫做最终类。
语法上很简单,只需要我们在class的前面使用一个关键字“final”
例:public final class GrandsonClass extends SonClass {}
final:最后的,不能变化的
变量(包括属性和局部变量)加final 变成常量,意味着这个量的数据不能改变了;
类加final,变成最终类,意味着这个类也不能被扩展变化了,也就是说不能被继承了;
方法加final,变成最终方法,意味着这个方法不能被重写;
例:public final void setHeight(float height) {
this.height = height;
}
构造方法不能加final,为什么呢?
构造方法是不能被继承,因此也就不能被重写!所以构造方法只能在本类中被确定,然后根据确定的定义来使用,也就不存在在其他地方改变的可能,所以不用申明final来定义它的不可更改性。
最著名的一个JDK中不能继承的类----String
final在面试过程中,除了经常考察上面它的三种用法,以及构造方法为啥不能用以外,
还容易和其他两个相似的东西一起做辨析:
final、finally、finalize的区别。