Java LinkedList的源代码中有空构造函数
下面我写的关于jdk-8u111中LinkedList.java的内容正确吗 我们可以看到构造函数中不存在代码,并且 这种奇怪的构造函数适用于以后的子类。我们知道 编译器将自动向 如果构造函数没有显式的Java LinkedList的源代码中有空构造函数,java,Java,下面我写的关于jdk-8u111中LinkedList.java的内容正确吗 我们可以看到构造函数中不存在代码,并且 这种奇怪的构造函数适用于以后的子类。我们知道 编译器将自动向 如果构造函数没有显式的super() 呼叫如果父类没有这样的错误,编译器将报告错误 没有参数构造函数 Error:(x, y) java: no suitable constructor found for parent class(no arguments) 我们可以得出结论,LinkedList的空构造函数是供子
super()
呼叫如果父类没有这样的错误,编译器将报告错误
没有参数构造函数
Error:(x, y) java: no suitable constructor found for parent class(no arguments)
我们可以得出结论,LinkedList
的空构造函数是供子类使用的
不,这与子类无关 如果您没有定义任何构造函数,那么Java将自动添加一个默认构造函数。但是,如果定义了其他构造函数,则必须写出默认构造函数。因为此构造函数存在:
LinkedList(Collection<? extends E> c);
如果我没有写出一个显式的空默认构造函数,它就可以工作并且没有错误。编译器执行成功。所以不写出来没关系吧?如果我们已经有了另一个构造函数,那么需要写出什么呢
- 在没有构造函数的情况下,会添加一个默认构造函数,我们可以成功调用
:newthing()
- 添加了非默认构造函数后,Java不再单独添加默认构造函数。现在
是一个错误newthing()
结果:class Thing { public Thing(int foo) { } } Thing t = new Thing();
Test.java:7: error: constructor Thing in class Thing cannot be applied to given types; Thing t = new Thing(); ^ required: int found: no arguments reason: actual and formal argument lists differ in length 1 error
- 我们必须写出代码要编译的默认构造函数:
class Thing { public Thing() { } public Thing(int foo) { } } Thing t = new Thing();
- 不,这与子类无关
如果您没有定义任何构造函数,那么Java将自动添加一个默认构造函数。但是,如果定义了其他构造函数,则必须写出默认构造函数。因为此构造函数存在:
LinkedList(Collection<? extends E> c);
如果我没有写出一个显式的空默认构造函数,它就可以工作并且没有错误。编译器执行成功。所以不写出来没关系吧?如果我们已经有了另一个构造函数,那么需要写出什么呢
- 在没有构造函数的情况下,会添加一个默认构造函数,我们可以成功调用
:newthing()
- 添加了非默认构造函数后,Java不再单独添加默认构造函数。现在
是一个错误newthing()
结果:class Thing { public Thing(int foo) { } } Thing t = new Thing();
Test.java:7: error: constructor Thing in class Thing cannot be applied to given types; Thing t = new Thing(); ^ required: int found: no arguments reason: actual and formal argument lists differ in length 1 error
- 我们必须写出代码要编译的默认构造函数:
class Thing { public Thing() { } public Thing(int foo) { } } Thing t = new Thing();