为什么我们在实现链表时应该使用 2 个构造函数



教授向我们展示了在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 会创建默认构造函数,但这真的是为了确保在这种情况下没有错误吗?如果是这样,在我们没有默认构造函数的情况下会出现什么错误?

有时,您希望在实例化对象时拥有更多的构造函数(重载(,以便于使用和可读性。即使构造函数不打算由其他类调用private也可以由正在审查或维护该类的其他程序员再次查看或使用。

在您的情况下,Node(data)Node(data,null)的简写,因为其他程序员可能不知道如何在没有定义next的情况下实例化单个Node

拥有更多的构造函数对非private类(publicprotecteddefault(更有帮助,因为其他程序员可能会扩展或重用你的类及其构造函数。具有其他构造函数可以允许不同的实例化方式。

不需要同时拥有两个构造函数。这可能只是你的教授给出的一个例子,两个构造函数,以及其中一个使用另一个的例子。
在您的示例中,new Node(someKindOfVariable, null)使用第二个构造函数,与使用第一个构造函数new Node(someKindOfVariable)相同。因此,没有必要拥有第一个构造函数。

相关内容

  • 没有找到相关文章

最新更新