原文鏈接
final用來修飾變量,方法,類。
- final variable:創(chuàng)建常量;
- final methods:阻止方法被重寫。
- final class:阻止繼承。
Final variables
- 值不能被修改,如果是引用類型的話就代表不能重新指向另一個對象,但是該對象內部的值可以改變。必須被初始化(只能初始化一次),可以在多個位置被初始化。
public class FinalExample {
final int A = 5;//直接初始化
final int B;
final int C;
static final double PI = 3.1415;//直接初始化
static final double D;
{
B = 1;//實例構造代碼塊內的初始化
}
static {
//C = 1;non-static variable C cannot be referenced from a static context
D = 1.0;//靜態(tài)變量可以在靜態(tài)代碼塊中初始化
}
public FinalExample() {
C = 1;//在構造函數(shù)中初始化
}
}
non-transitivity非傳遞性:對一個引用變量final保證了這個引用是final的,如果這個引用指向了一個數(shù)組,數(shù)組的成員的值還是可以變化。arrays are objects in java
Final classes
final class不能被繼承。作用:
-
prevent inheritance阻止繼承:例如所有
Wrapper Class比如Integer和Float。 -
create an immutable class創(chuàng)建不可變的類:比如
String
Final methods
不能被override。