Java訪問修飾符–public, protected, private and default Java提供了 四個訪問修飾符 來設置類,變數,方法和構造函數的訪問級別,即 public , private , protected 和 default 。這些訪問級別修飾符確定其他類是否可以使用特定 ...
Java訪問修飾符–public, protected, private and default
Java提供了四個訪問修飾符來設置類,變數,方法和構造函數的訪問級別,即public,private,protected和default。這些訪問級別修飾符確定其他類是否可以使用特定欄位或調用特定方法。
1. Java訪問修飾符
讓我們快速地比較一下這些訪問修飾符。
- public -隨處可見
- protected –可在同一包和子類中訪問
- default –僅在同一程式包中可訪問
- private –僅可在同一類上使用
可以嚴格按以下順序對訪問說明符進行排序:
公用>受保護>軟體包專用(或預設)>專用
1.1. public
**公眾可以從任何地方訪問。**可以從任何其他類訪問已聲明為公共的類,方法,構造函數,介面等。
但是,如果我們嘗試訪問的公共類位於不同的包中,則仍然需要導入公共類。
public class HelloWorld
{
private String format;
public String getFormat() {
return this.format;
}
public void setFormat(String format) {
this.format = format;
}
}
在上面的示例中,getFormat()
和setFormat()
方法是公共的,因此可以在任何地方訪問它們。
1.2. protected
**相同程式包的類和任何程式包中的子類都可以訪問Protected。**受保護的訪問使子類有機會使用helper方法或變數,同時防止無關的類嘗試使用它。
public class HelloWorld
{
private String format;
protected String getFormat() {
return this.format;
}
protected void setFormat(String format) {
this.format = format;
}
}
在上面給出的示例中HelloWorld
,變數format
是聲明的protected
,因此可以由存在於同一包中的所有類HelloWorld.java
以及存在於其他包中的子類訪問。
1.3. default (package private)
預設訪問修飾符意味著我們不會為類,欄位,方法等明確聲明訪問修飾符。預設可被同一包的類訪問。
請註意,public static final
預設情況下,介面中的欄位是隱式的,介面中的方法是預設的public
。
public class HelloWorld
{
String format;
public String getFormat() {
return this.format;
}
public void setFormat(String format) {
this.format = format;
}
}
1.4. private
private訪問修飾符是最嚴格的訪問級別。(最高級)類和介面不能是私有的。**私人變數只能在同一類內訪問。**聲明為私有的方法,變數和構造函數只能在聲明的類本身內訪問。
在上面給出的示例中HelloWorld
,變數format
被聲明為私有,因此沒有類可以直接訪問它。必須通過公共方法getFormat()
和進行訪問setFormat()
。
**訪問級別以兩種方式影響您。**首先,當您使用來自另一個來源的類時,訪問級別確定您自己的類可以使用那些類的成員。其次,編寫類時,需要確定類中每個成員變數和每個方法應具有的訪問級別。
局部變數和形式參數不能使用訪問說明符。由於根據範圍規則,它們本質上是外部無法訪問的,因此它們實際上是私有的。
如果其他程式員使用您的類,則要確保不會發生由於濫用而引起的錯誤。訪問級別可以幫助您做到這一點。
2.訪問控制級別
訪問控制分為兩個級別。
- 類級別 -允許的修飾符是public或package-private(預設)。
- 方法級別 -允許的修飾符是public,private,protected或package-private(預設)。
可以使用修飾符聲明一個類public
,在這種情況下,該類對於所有地方的所有類都是可見的。如果類沒有修飾符(default
,也稱為package-private),則僅在其自己的包中可見。
對於成員,還有兩個附加的訪問修飾符:private
和protected
。private修飾符指定只能在其自己的類中訪問該成員。
protected修飾符指定成員只能在其自己的程式包中(與package-private一樣)訪問,並且只能由其在另一個程式包中的類的子類訪問
更多精彩請關註