在Java中,構造函數的訪問權限可以設置為以下四種之一:public
、protected
、default
(包訪問權限)和private
。
public
:如果構造函數是public
的,那么它可以從任何其他類被訪問和調用。這是最常用的訪問級別,因為它允許類的實例在程序的任何地方被創建。public class MyClass {
public MyClass() {
// 構造函數內容
}
}
protected
:如果構造函數是protected
的,那么它只能從同一個包中的類或者子類中被訪問和調用。public class MyClass {
protected MyClass() {
// 構造函數內容
}
}
// 在同一個包中的另一個類
class AnotherClassInSamePackage extends MyClass {
public AnotherClassInSamePackage() {
super();
}
}
default
(包訪問權限):如果構造函數沒有指定訪問修飾符,那么它的訪問權限就是默認的,也稱為包訪問權限。這意味著它只能從同一個包中的類被訪問和調用。public class MyClass {
MyClass() {
// 構造函數內容
}
}
// 在同一個包中的另一個類
class AnotherClassInSamePackage {
public AnotherClassInSamePackage() {
MyClass obj = new MyClass(); // 可以訪問MyClass的私有構造函數
}
}
注意:不能從不同的包中直接訪問default
訪問級別的構造函數。
private
:如果構造函數是private
的,那么它只能在定義它的類內部被訪問和調用。這通常用于實現單例模式或者工廠方法模式等設計模式。public class MyClass {
private MyClass() {
// 構造函數內容
}
}
// 不能從其他類中訪問MyClass的私有構造函數