2 回答

TA貢獻(xiàn)1735條經(jīng)驗(yàn) 獲得超5個(gè)贊
本類內(nèi)部中實(shí)例化對(duì)象。
類中的封裝性不光體現(xiàn)在對(duì)屬性的封裝上,實(shí)際上方法也是可以被封裝的,當(dāng)然在方法封裝中也包含了對(duì)構(gòu)造方法的封裝。
舉例:
public class GzPrivate2 {
public static void main(String[] args) {
//聲明對(duì)象,不會(huì)報(bào)錯(cuò)
Singleton s = null;
//實(shí)例化對(duì)象,調(diào)用了私有化的構(gòu)造方法,程序報(bào)錯(cuò)
s = new Singleton();//錯(cuò)誤,無(wú)法實(shí)例化對(duì)象
}
}
class Singleton{
private Singleton(){
//將構(gòu)造方法進(jìn)行了封裝,私有化,這時(shí)候此構(gòu)造方法只能在本類中可見(jiàn)!
}
public void prit(){
System.out.println("nishuibaichuan");
}
}
以上程序運(yùn)行報(bào)錯(cuò)!因?yàn)榇祟怱ingleton中的構(gòu)造方法被私有化了,只能在本類Singleton中可見(jiàn),不能再外部直接實(shí)例化!既然再外部不可用,那么我們就在內(nèi)部使用!
舉例:
public class GzPrivate {
public static void main(String[] args) {
//聲明對(duì)象,不會(huì)報(bào)錯(cuò)
Singleton1 s = null;
}
}
class Singleton1{
//在內(nèi)部產(chǎn)生本類的實(shí)例化對(duì)象
Singleton1 singleton1 = new Singleton1();
private Singleton1(){
//將構(gòu)造方法進(jìn)行了封裝,私有化,這時(shí)候此構(gòu)造方法只能在本類中可見(jiàn)!
}
public void prit(){
System.out.println("nishuibaichuan");
}
}
由上代碼可知,當(dāng)構(gòu)造方法在其類中被私有化,那么就只能在其本類內(nèi)部中實(shí)例化對(duì)象了!
添加回答
舉報(bào)