gpt4 book ai didi

java - 为什么 ArrayList 的构造函数 (ArrayList(int initialCapacity)) 调用其父类(super class)的默认构造函数?

转载 作者:行者123 更新时间:2023-12-01 17:20:57 25 4
gpt4 key购买 nike

ArrayList.java中,为什么ArrayList(int initialCapacity)构造函数调用super()

我知道它正在尝试调用其父类(super class)的默认构造函数,即 AbstractList()。但 AbstractList() 中绝对没有实现。

protected AbstractList() {
}

无论如何,在这种情况下将调用父类(super class)的默认构造函数。
需要写什么super()

最佳答案

AbstractList 构造函数不执行任何操作,但这并不意味着不必调用它。更准确地说,空构造函数实际上并不执行任何操作。当调用构造函数时,即使构造函数为空,JVM 仍然会执行操作。创建对象时始终必须调用构造函数,并且每个构造函数始终必须首先调用父类(super class)构造函数(当然 Object 除外)。

如果您不在ArrayList的构造函数中编写super(),默认情况下它仍然会被隐式调用。一些开发人员认为明确地编写它是一种很好的风格。声明一个空的默认构造函数也是如此,它也是默认的。虽然这里有一点不一致。如果他们坚持相同的约定,我想应该是

protected AbstractList() {
super();
}

关于java - 为什么 ArrayList 的构造函数 (ArrayList(int initialCapacity)) 调用其父类(super class)的默认构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18867288/

25 4 0