在這個實例中,我們將學(xué)習(xí)用Java實現(xiàn)私有構(gòu)造函數(shù)。
要理解此示例,您應(yīng)該了解以下Java編程主題:
class Test { //創(chuàng)建私有構(gòu)造函數(shù) private Test () { System.out.println("這是一個私有構(gòu)造函數(shù)。"); } //創(chuàng)建一個公共靜態(tài)方法 public static void instanceMethod() { //創(chuàng)建一個Test類的實例 Test obj = new Test(); } } class Main { public static void main(String[] args) { //調(diào)用instanceMethod() Test.instanceMethod(); } }
輸出結(jié)果
這是一個私有構(gòu)造函數(shù)。
在上面的示例中,我們創(chuàng)建了Test類的私有構(gòu)造函數(shù)。因此,我們不能在Test類之外創(chuàng)建該類的對象。
這就是為什么我們在類內(nèi)部創(chuàng)建了一個名為 instanceMethod()的公共靜態(tài)方法,該方法用于創(chuàng)建Test類的對象。 在Main類中,我們使用類名調(diào)用該方法。
Java 單例設(shè)計模式可確保一個類只有一個實例。為此,我們使用私有構(gòu)造函數(shù)。
class Language { //創(chuàng)建一個類類型的公共靜態(tài)變量 private static Language language; //私有構(gòu)造函數(shù) private Language() { System.out.println("內(nèi)部私有構(gòu)造函數(shù)"); } //公共靜態(tài)方法 public static Language getInstance() { //創(chuàng)建對象(如果尚未創(chuàng)建) if(language == null) { language = new Language(); } //返回單例對象 return language; } public void display() { System.out.println("實現(xiàn)了單例模式"); } } class Main { public static void main(String[] args) { Language db1; //調(diào)用getInstance方法 db1= Language.getInstance(); db1.display(); } }
輸出結(jié)果
內(nèi)部私有構(gòu)造函數(shù) 實現(xiàn)了單例模式
在上面的示例中,我們創(chuàng)建了一個名為Languages的類。該類包含:
language - 類類型 private 變量
Language() - private 構(gòu)造函數(shù)
getInstance() - public static 類類型方法
display() - public 方法
由于構(gòu)造函數(shù)是私有的,因此我們不能從外部類創(chuàng)建Language對象。 因此,我們在getInstance()方法內(nèi)創(chuàng)建了該類的對象。
但是,我們以僅創(chuàng)建一個對象的方式設(shè)置了條件。 并且,該方法返回對象。
注意這一行,
db1 = Language.getInstance();
這里,
db1 是 Language 類型的變量
Language.getInstance() - 調(diào)用方法getInstance()
由于getInstance()返回Language類的對象,因此為db1變量分配了返回的對象。
最后,我們使用對象調(diào)用了display()方法。