第二章:簡單 Java 程式解析
第三章:變數與資料型態
第四章:運算子、運算式與敘述
第五章:選擇性敘述與迴圈
第十章:實例變數與函數、類別變數與函數
Powered By GitBook
Protected members
protected members 保護成員,在先前的範例皆使用過公有public、私有private的成員,而在本篇將帶入 保護 protected 使用方式。
把成員宣告為 protected 的用處以及好處為:
    父類別與子類別皆能使用
    除 父、子類別之外就無法存取
    不像 private 無法直接繼承至子類別,或透過公開函數來繼承
    利用繼承,父類別中的 protected 可直接繼承至子類別
改寫先前的範例來做示範:
先前 CCircle 父類別使用的為私有成員,因此子類別需要透過公有public 來存取private成員;
1
private static double pi=3.14;
2
private double radius;
Copied!
改寫後如下:
1
class CCircle
2
{
3
protected static double pi=3.14; // 宣告為protected
4
protected double radius; // 宣告為protected
5
6
public void show()
7
{
8
System.out.println("area="+pi*radius*radius);
9
}
10
}
11
class CCoin extends CCircle // 子類別 CCoin
12
{
13
private int value;
14
15
public CCoin(double r, int v)
16
{
17
radius=r; // 直接取用父類別的protected成員
18
value=v;
19
System.out.println("radius="+radius+", value="+value);
20
}
21
}
22
public class class04
23
{
24
public static void main(String args[])
25
{
26
CCoin coin=new CCoin(2,10);
27
coin.show();
28
}
29
}
Copied!
當main() 中,建立 coin 物件時,傳值呼叫子類別的「有引數的建構元」:
並直接設值至父類別的 radius 成員。
因此執行結果會先印出 radius=2, value=10
而呼叫 show 時,將會印出 area=12.56
我想,透過這樣的範例 protected 與 private 最大的差異就是其便利性了。
兩者同樣有不被外界任意更改與存取的用途; 而在父子類別之間的運用,使用 protected 不僅安全也便利。
Last modified 9mo ago
Copy link