gpt4 book ai didi

java - java中父类(super class)和子类之间的构造函数

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

当我创建一个具有两个构造函数的子类时,我需要定义一个构造函数 SuperClass(int m)因为我的子类的第二个构造函数正在调用它 super() 。这是我理解的部分。但除非我在父类(super class)中定义另一个构造函数,如SuperClass(){},否则代码将无法编译。 ,不是SuperClass(int m, int n){} 。为什么?

public class SubClass extends SuperClass {

int i,j,k;
public SubClass(int m, int n){
this.i = m;
this.j=n;
}
public SubClass(int m){
super(m);
}
}

最佳答案

public SubClass(int m, int n){
this.i = m;
this.j=n;
}

在上面的构造函数中,暗示存在父类(super class)无参数构造函数。它等同于:

public SubClass(int m, int n){
super(); // This was implied.
this.i = m;
this.j=n;
}

另一种情况是这样的:

public SubClass(int m){
super(m);
}

在这里,您声明您正在使用一个带有一个参数m的父类(super class)构造函数。

所以,基本上你的父类(super class)必须声明两个构造函数才能使代码工作:

SuperClass() {
// The default constructor
}

SuperClass(int m) {
// one arg constructor...
}

但是,如果您指定以下父类(super class)构造函数:

SuperClass(int m, int n){}

然后你可以像这样重写你的子类构造函数:

public SubClass(int m, int n){
super(m, n);
}

This article from Oracle很好地解释了构造函数的用法!

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

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