第二章:簡單 Java 程式解析
第三章:變數與資料型態
第四章:運算子、運算式與敘述
第五章:選擇性敘述與迴圈
第十章:實例變數與函數、類別變數與函數
Powered By GitBook
設定終止繼承
在父類別中,有不希望被子類別繼承的成員 可以加上final 來終止繼承。 若父類別中的函數成員加上 final ,子類別也就無法改寫(overriding)。
    宣告為 final 後的變數,如同常數一般,無法再被更改
    函數宣告 final後,無法改寫(overriding)
    類別亦可宣告 final,如此一來就沒有子類別可以繼承
修改 super與this 文章中的範例,來做本篇的示範:
1
final class Cfinal
2
{
3
public void show()
4
{
5
System.out.println("Cfinal 父類別");
6
}
7
}
8
class Ctest extend Cfinal
9
{
10
public void show()
11
{
12
System.out.println("Ctest 子類別");
13
}
14
}
15
16
class Caaa
17
{
18
protected final int num=10;
19
20
public final void show()
21
{
22
System.out.println("Caaa_num="+num);
23
}
24
}
25
class Cbbb extends Caaa
26
{
27
int num=10;
28
29
public void show()
30
{
31
super.num=20;
32
System.out.println("Cbbb_num="+num);
33
super.show();
34
}
35
}
36
37
public class supervsthis
38
{
39
public static void main(String args[])
40
{
41
Cbbb b=new Cbbb();
42
b.show();
43
}
44
}
Copied!
於本次範例有幾個點注意的部分:
    將父類別 Cfinal 經過 final 宣告,因此底下的子類別 Ctest 是無法繼承父類別的
    1
    class Ctest extend Cfinal
    Copied!
    再看到另一個父類別 Caaa 中,
    1
    protected final int num=10;
    2
    3
    public final void show()
    4
    {
    5
    System.out.println("Caaa_num="+num);
    6
    }
    Copied!
    分別有 資料成員 num 與函數show() 經過 final 宣告, 因此在子類別 Cbbb 就無法正常繼承來自父類別的 num 或是 改寫父類別的 show() 函數
    另外在 num 部分,若一變數想要經過 final 宣告,必須給訂一個值; 使之變成像常數一般,無法更改。
    1
    protected final int num=10;
    Copied!
    常見範例如:
    1
    protected final double PI=3.1415;
    Copied!
    如此一來,程式任何一處將不會更改到 PI 值。
Last modified 9mo ago
Copy link