Comment on page
設定終止繼承
在父類別中,有不希望被子類別繼承的成員 可以加上final 來終止繼承。
若父類別中的函數成員加上 final ,子類別也就無法改寫(overriding)。
- 宣告為 final 後的變數,如同常數一般,無法再被更改
- 函數宣告 final後,無法改寫(overriding)
- 類別亦可宣告 final,如此一來就沒有子類別可以繼承
final class Cfinal
{
public void show()
{
System.out.println("Cfinal 父類別");
}
}
class Ctest extend Cfinal
{
public void show()
{
System.out.println("Ctest 子類別");
}
}
class Caaa
{
protected final int num=10;
public final void show()
{
System.out.println("Caaa_num="+num);
}
}
class Cbbb extends Caaa
{
int num=10;
public void show()
{
super.num=20;
System.out.println("Cbbb_num="+num);
super.show();
}
}
public class supervsthis
{
public static void main(String args[])
{
Cbbb b=new Cbbb();
b.show();
}
}
於本次範例有幾個點注意的部分:
- 將父類別 Cfinal 經過 final 宣告,因此底下的子類別 Ctest 是無法繼承父類別的class Ctest extend Cfinal
- 再看到另一個父類別 Caaa 中,protected final int num=10;public final void show(){System.out.println("Caaa_num="+num);}分別有 資料成員 num 與函數show() 經過 final 宣告, 因此在子類別 Cbbb 就無法正常繼承來自父類別的 num 或是 改寫父類別的 show() 函數
- 另外在 num 部分,若一變數想要經過 final 宣告,必須給訂一個值; 使之變成像常數一般,無法更改。protected final int num=10;常見範例如:protected final double PI=3.1415;如此一來,程式任何一處將不會更改到 PI 值。
Last modified 2yr ago