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