存取修飾子
介紹Java的存取修飾子 public、private、protected,以及四種權限範圍
為什麼需要存取修飾子? Why Access Modifier?
上一章的package有談過,一個專案或系統通常都是團隊分工完成的,也就是說每個人負責自己的部份,透過一定的配合來完成專案的目標。 在寫程式的過程中,難免會有些自己特有的技術不想公開給別人知道。或是開放特定的方法讓別人存取,但不想讓別人知道類別中細部的設定(或許被隨意設定那個方法就失效了)。
物件導向有一個重要特性,封裝(Encapsulation),封裝的概念是把內部的資料、實作細節隱藏起來,只開放要給別人存取的方法給別人存取。這個方法是該類別擁有者期望你去使用的方法,利用此方法來達到某個特定功能。
利用存取修飾子來控制什麼可以讓別人看到、什麼不要讓別人看到。藉此保護程式的安全、完整性。
在 Java定義的關鍵字中,有3個存取修飾子:
public
protected
private
嗯,這當然不是我多列一項XD 而是雖然有3個修飾子,但有4種權限範圍。
存取修飾子主要是控制類別間能不能互相存取的要素。
因此我們會特別討論4種情況; 1. 同一類別 (class) 2. 同一套件 (package) 3. 子類別 (subclass) 4. 不同套件 (world)
可以存取的意思就是,用於變數方法上,可以透過點運算子直接存取、呼叫。 用在類別上,就是可以利用該類別來建立物件。
可以把存取修飾子想像成能不能被別人看到。
public 公開
public int value = 10;
就像字面上的意思,任何人都可以進行存取。 也就是最輕鬆簡單,大家都存取的到,所以上面4種情況都有,是權限範圍最大的。
protected 保護
protected int value = 10;
保護的意思是,不同套件的類別中,僅限該類別的子類別可以存取。 是這4種權限中開放範圍第二大的。
(no modifier,預設)
int value = 10;
如果沒有寫任何修飾子,就是這種權限,有些人會稱這種權限為 package。 因為在同一個package內的類別都可以存取,不同套件存取不到。
private 私有
private int value = 10;
private權限範圍是最小的,只有自己類別的成員可以存取,要做資料方法的隱藏性很常使用此修飾子。
修飾子比較表:
修飾子
同一類別
同一套件
不同套件的子類別
不同套件且非子類別
public
●
●
●
●
protected
●
●
●
(no modifier)
●
●
private
●
Last updated
Was this helpful?