回覆列表
-
1 # 孤天一鶴
-
2 # 布丁NET
“一定”未免太絕對,面向物件的三大特性之一就是封裝,構造方法引數的作用之一就是保證封裝的完整與正確。比如“方形”類,構造方法傳入長、寬,如果存在無參構造,後續使用物件時就需要考慮非正常情況的處理,增加了複雜性。所以,類設計構造方法按需就好,甚至更建議多考慮有參構造(如spring的autowire建議構造注入,而不是屬性注入)
-
3 # 專罵囼獨
一個A類如果顯式的提供了一個有參構造方法,那麼虛擬機器將不在隱式的提供無參構造方法。此時,如果一個類B繼承A,在B類的構造方法中沒有顯式的使用super(引數列表)呼叫父類的有參構造方法,虛擬機器將在類B的構造方法第一行隱式呼叫super()無參構造方法,此時將報錯。
-
4 # 樂百川
Java程式語言為大家所廣泛使用,其中一個重要原因就是Java有著眾多方便好用的類庫和框架,使用這些框架可以大大提高我們的程式設計效率。不過很多框架在使用的時候都有一個約定俗成的規定,就是使用物件的時候要有一個無參構造方法,這樣可以讓類庫比較方便的使用我們的類。
當然這指的是一般情況下,一些需要我們或者框架去初始化的類才要這麼做。如果一些類作為工具類,不需要初始化為物件,那麼就完全不必要設計無參構造方法,甚至有時候要故意將構造方法設定為私有,防止呼叫者去初始化它,不過這就是另外一回事了。
-
5 # 二次元程式猿
若沒有自定義其他構造方法時,編譯後會自動建立一個無參構造方法,而構造方法是為了jvm初始化物件。沒有構造方法就相當於此類是不能透過new關鍵字初始化的,如一些需要受到保護的類就會提供一個私有構造方法,禁止外部類new,然後提供一些單例模式的懶漢、餓漢方法來獲取此類的物件。
類中若無顯示定義有參構造方法,jvm會預設提供一個無參的構造方法。若已經顯示提供了有參構造方法,無參的構造方法就沒有了。
無參構造方法作用(不限於):
1.方便例項化物件
2.序列化和反序列化
3.反射獲取例項物件