在父類別中,有不希望被子類別繼承的成員 可以加上final 來終止繼承。
若父類別中的函數成員加上 final ,子類別也就無法改寫(overriding)。
修改 super與this 文章中的範例,來做本篇的示範:
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();
}
}
於本次範例有幾個點注意的部分:
class Ctest extend Cfinal
protected final int num=10;
public final void show()
{
System.out.println("Caaa_num="+num);
}
分別有 資料成員 num 與函數show() 經過 final 宣告,
因此在子類別 Cbbb 就無法正常繼承來自父類別的 num 或是 改寫父類別的 show() 函數
protected final int num=10;
常見範例如:
protected final double PI=3.1415;
如此一來,程式任何一處將不會更改到 PI 值。
如果您喜歡我的文章,可以至 4xDev 的 Java 學習系列閱讀更多 Java 文章。