在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Java/ 為什么java不在任何時候都讓類有一個隱藏的無參構(gòu)造方法?

為什么java不在任何時候都讓類有一個隱藏的無參構(gòu)造方法?

為什么寫了構(gòu)造方法后要取消這個隱藏的?是出于什么考慮的

回答
編輯回答
何蘇葉

因?yàn)樗恢滥氵@個類的實(shí)例化究竟會不會依賴外部因素

很多類的創(chuàng)建本質(zhì)上是保存一份當(dāng)前某些變量的狀態(tài)從而得到新的狀態(tài)

如果在定義構(gòu)造方法后不取消默認(rèn)的空參構(gòu)造器,那么一旦類本來需要根據(jù)外部狀態(tài)來初始化,默認(rèn)的空參構(gòu)造器都會使得這些狀態(tài)丟失。

比如說

class A {
   private String a;

   A(String s) {
      a = s;
   }
}

對于上面這個類,構(gòu)造方法中只是簡單的保存一個外部狀態(tài),其他方法會用到 a ,如果用空參構(gòu)造器實(shí)例化類那么很顯然 a 永遠(yuǎn)是空的,除非你還為 a 設(shè)置了 setter ,但那就沒有了 “這個類的實(shí)例化依賴于這個狀態(tài)”的語義。

何況更多的時候,在構(gòu)造器中拿到諸如 a 之類的變量后就會開始使用(比如截取,計算……),那就會導(dǎo)致實(shí)例化時就空指針了。

2017年8月11日 21:52