我在寻找考试准备问题时遇到了这段代码。 我不明白什么是调用父类(super class)构造函数 在这段代码中?
输出是 ---> feline cougar cc
THL
public class Feline{
public String type = "f ";
public Feline(){
System.out.print("feline ");
}
}
-
public class Cougar extends Feline {
public Cougar(){
System.out.print("cougar ");
}
public static void main(String[] args){
new Cougar().go();
}
void go(){
type = "c ";
System.out.print(this.type + super.type);
}
}
最佳答案
当您有一个扩展其他类的类时,例如Cougar extends Feline
,必须在构造函数的顶部调用父类(super class)。当您不编写该构造函数时,Java 会假定您打算调用默认的父类(super class)构造函数。所以你的构造函数:
public Cougar(){
System.out.print("cougar ");
}
实际上解释为:
public Cougar(){
super();
System.out.print("cougar ");
}
因此调用父类(super class)构造函数。值得注意的是,由于所有类都是 Object
类的扩展,因此在您将编写的每个构造函数的开头都会调用一个父类(super class)构造函数 - 无论是您的显式构造函数已经包含带或不带参数,或者默认的父类(super class)构造函数(如果您未指定)。
关于java - 这里调用父类(super class)构造函数的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28866086/