最近在重溫之前看的 JavaSE 教程, 在 final 關鍵字這裡有點小疑惑, 查了些資料, 做個記錄.
定義
final 關鍵字是 Java 中的 非通路修飾符 , 可以用來修飾 類、方法 和 變量
作用
final 修飾的
-
類
無法被繼承
-
方法
無法被重寫(覆寫)
-
變量
隻能指派一次
用法
這裡主要記錄 final 應用在 變量 上的一些注意點
常量(final variable) 需要在聲明時 初始化(initialize) , 否則會導緻 編譯時錯誤
/*
一段用來示範 常量初始化 的 Java 代碼
*/
class Demo
{
// 1. 直接初始化
final int THRESHOLD = 5;
// 2. 執行個體語句塊初始化
final int CAPACITY;
// 3. 構造方法初始化
final int MINIMUM;
// 1. 直接初始化, 這是個靜态常量
static final double PI = 3.141592653589793;
// 4. 靜态語句塊初始化
static final double EULERCONSTANT;
// 2. 執行個體語句塊初始化(續)
{
CAPACITY = 25;
}
// 4. 靜态語句塊初始化(續)
static{
EULERCONSTANT = 2.3;
}
// 3. 構造方法初始化(續)
//
// 注意!!!
// 如有多個構造方法
// 務必在各個方法體中完成該常量的初始化
public Demo()
{
MINIMUM = -1;
}
}
局部常量(Local Final Variable)
當常量在 方法 / 構造器 / 語句塊 内部被聲明時, 它稱作 局部常量
它的 聲明 和 初始化 可以分行完成
final 是局部變量唯一可用的修飾符
class Demo
{
public static void main(String args[])
{
// 局部常量 i
final int i;
i = 20;
System.out.println(i);
}
}