在我们上一篇博文中提到了 fianl 这个关键字,对于这个关键字,本人在初学时也耗费了极大地心血,甚至和师兄进行了激烈的讨论,并且,在我们讨论、尝试 以及 翻阅各种资料,最终得出了合适、易懂的解释。
现在,本人来介绍一下final这个关键字:
final :
首先,本人来解答一下同学们现在心中可能有的疑惑——为什么会有final呢?
由于继承中有一个覆盖(方法重写)的现象(相关知识点在本人《详解 方法的覆盖 —— toString() 与 equals()的覆盖》)中进行详细讲解,而有时候我们不想让子类去“覆盖”父类的方法.这对这种情况java就给我们提供了一个关键字: final
那么,现在本人来介绍下使用这个关键字修饰的特点吧:
final修饰特点:
修饰类: 被修饰类不能被继承
修饰方法: 被修饰的方法不能被重写
修饰变量:
- 仅在 编译时 被赋初值,并在之后永不改变 的 常量;
- 在定义这种常量的时候,就必须对其赋值。因为fianl类型的变量,在构造方法时并不会被赋初值