簡體   English   中英

Java-在給定示例中使用super()

[英]Java - use of super() in the given example

我剛剛開始學習Spring框架,並在javatpoint.com上找到了一些教程。

我有以下代碼(沒什么特別的,只顯示一些問題和答案):

private int id;
private String name;
private Map<Answer,User> answers;

public Question(){}
public Question(int id, String name, Map<Answer,User> answers){
    super();
    this.id = id;
    this.name = name;
    this.answers = answers;
}

我的問題是:他為什么要使用那個空的構造函數和關鍵字super() 該應用程序在沒有它們的情況下可以運行,而在此代碼中我無法理解它們的優點。

PS:沒有超級類或類似的東西。

在某些情況下,無參數構造函數(例如, Question() )可能很有用-如果您將類用作Bean並希望延遲初始化其成員,通過GWT對其進行序列化等,則無需提供任何上下文。例如,這確實是多余的。

super()的調用是完全多余的,並且如果未指定對super [other]調用,則將隱式執行。

在大多數情況下,僅當您在諸如Hibernate或JPA之類的較差的框架中使用類時,才需要空的構造函數,而在該框架中,框架需要空的構造函數來創建您的類。 然后,空構造函數用於框架,非空構造函數通常用於測試或其他用途。

在上面的示例中,我沒有看到任何證據表明您使用了這種框架,因此不需要此空的構造函數。

至於super()則根本不需要。

每個未顯式擴展另一個類的類都隱式擴展java.lang.Object。 因此,super()只需調用Object的no-arg構造函數。

顯式調用是不必要的,因為編譯器會為您添加它。 當您要使用參數調用超類構造函數時,只需要在構造函數中添加super()調用即可。

因此,無論是否添加super()構造函數,結果都是相同的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM