package Feb2017;
public class Ques0221 extends Parent {
public static void main(String[] args) {
final Parent p = new Parent("aaa");
p = new Parent("bbb"); // 編譯錯誤
p.str = "ccc";
System.out.println(p.str);
}
}
class Parent {
String str;
public Parent() {}
public Parent(String s) { str = s; }
}
final Parent p 表示**引用不可變**,即 p 不能指向新對象。第 5 行 p = new Parent("bbb") 嘗試改變引用指向,**編譯直接報錯**:variable p might already have been assigned / cannot assign a value to final variable p。
final 修飾**基本類型**:值不可變final 修飾**引用類型**:引用(地址)不可變,**對象內容可變**p.str = "ccc" 合法,輸出 ccc**編譯失敗,無法運行**。
final 引用語義:鎖定引用,非鎖定對象Ques0221 extends Parent) 與本題無關,屬干擾項