簡體   English   中英

實現鏈接列表時,為什么要使用2個構造函數?

[英]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類( publicprotecteddefault )會更有幫助,因為其他程序員可能會擴展或重用您的類及其構造函數。 具有其他構造函數可以允許使用不同的實例化方法。

暫無
暫無

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

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