[英]Why should we use 2 constructors when implementing Linked List?
教授向我們展示了Java中鏈表和節點的實現。 節點以此開始:
private class Node{
private T data;
private Node next;
private Node(T data){
this(data,null)
}
private Node(T dataP, Node nextN){
data = dataP;
next= nextN;
}
}
使用兩個不同的構造函數的原因是什么? 客戶端可以根據需要使用Node null調用第二個構造函數。 教授說,這也不是讓客戶更輕松。 我知道如果您不提供默認構造函數,Java會創建默認構造函數,但這真的是要確保在這種情況下沒有錯誤? 如果是這樣,在沒有默認構造函數的情況下會出現什么錯誤?
不需要同時使用兩個構造函數。 這可能只是您的教授給出的兩個構造函數的示例,而其中一個使用另一個構造函數的示例。
在您的示例中new Node(someKindOfVariable, null)
使用第二個構造函數的new Node(someKindOfVariable, null)
使用第一個構造函數的new Node(someKindOfVariable)
相同。 因此,沒有必要擁有第一個構造函數。
有時,在實例化對象時,為了方便和易於閱讀,您希望擁有更多的構造函數(重載)。 即使不打算將private
構造函數由其他類調用,但是正在審閱或維護該類的另一個程序員也可以查看或再次使用它。
在您的情況下, Node(data)
是Node(data,null)
簡寫,因為其他程序員可能不知道如何實例化沒有next
定義的單個Node
。
具有更多的構造函數對非private
類( public
, protected
或default
)會更有幫助,因為其他程序員可能會擴展或重用您的類及其構造函數。 具有其他構造函數可以允許使用不同的實例化方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.