final keyword 在java中,是用於屬性的限制。
它可以用於以下多種宣告方式:
類別(class)
當宣告在類別時,該類別就無法被繼承(extend)。
例子:
final class Door{} //final class
class SpecialAlarm extends Door{
void open(){System.out.println("Alarming!");}
public static void main(String args[]){
SpecialAlarm alarm = new SpecialAlarm();
alarm.open();
}
}
結果:Compile Time Error
當有其他class嘗試去extend,會出現error。
函數(method)
當宣告在函數時,可繼承(extend)但無法覆寫(overwrite)
例子:
class Door{
final void open() //final method
{System.out.println("open the door");}
}
class Alarm extends Door{
void open(){System.out.println("Alarming!");}
public static void main(String args[]){
Alarm alarm = new Alarm();
alarm.open();
}
}
結果:Compile Time Error
當有其他method嘗試去overwrite,會出現error。
變數(variable)
當宣告在變數時,它是一個常數,是無法被修改的。
例子:
class Door{
final int weight_kg=20;//final variable
void changeWeight(){
weight_kg =40;
}
public static void main(String args[]){
Door obj=new Door ();
obj.changeWeight();
}
}
結果:Compile Time Error
當將變數(variable)宣告為final,又嘗試去修改,會出現error。