gpt4 book ai didi

java - 关于父类(super class)和子类构造函数的问题

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

为什么代码(1)不会产生错误,而代码(2)(3)会产生错误?

我认为当子类调用构造函数时,它会先调用父类(super class)构造函数,但我不知道为什么代码(1)是正确的,而其他两个是错误的。

//(1)

public class Parent {
public int a;

public Parent() {
this.a = 0;
}
}

public class Child extends Parent {
public Child() {}
}

//(2)

public class Parent {
public int a;

public Parent(int number) {
this.a = number;
}
}

public class Child extends Parent {
public Child() {}
}

//(3)

public class Parent {
public int a;

public Parent(int number) {
this.a = number;
}
}

public class Child extends Parent {
public Child(int numb) {
}
}

代码(1)是正确的,而其他两个是错误的。

最佳答案

Note: If a constructor does not explicitly invoke a superclass constructor, the Java compiler automatically inserts a call to the no-argument constructor of the superclass. If the super class does not have a no-argument constructor, you will get a compile-time error. Object does have such a constructor, so if Object is the only superclass, there is no problem.

因此,您的代码 (2)(3) 没有无参构造函数,而且您也没有显式调用有参数构造函数,因此出现了编译时错误。更多详情来自https://docs.oracle.com/javase/tutorial/java/IandI/super.html

关于java - 关于父类(super class)和子类构造函数的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58194109/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com