存取修飾子
介紹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 公開
就像字面上的意思,任何人都可以進行存取。 也就是最輕鬆簡單,大家都存取的到,所以上面4種情況都有,是權限範圍最大的。
protected 保護
保護的意思是,不同套件的類別中,僅限該類別的子類別可以存取。 是這4種權限中開放範圍第二大的。
(no modifier,預設)
如果沒有寫任何修飾子,就是這種權限,有些人會稱這種權限為 package。 因為在同一個package內的類別都可以存取,不同套件存取不到。
private 私有
private權限範圍是最小的,只有自己類別的成員可以存取,要做資料方法的隱藏性很常使用此修飾子。
修飾子比較表:
Last updated