gpt4 book ai didi

java - 在调用子类构造函数之前,编译器是否会在子类构造函数中查找 **super** 关键字?

转载 作者:行者123 更新时间:2023-11-30 03:38:38 26 4
gpt4 key购买 nike

我在同一个包中有以下类:

class Moo
{
Moo()
{
System.out.println("No-Arguments Base Constructor!");
}

Moo(int a)
{
System.out.println("Parameterized Base Constructor!");
}

public String coolMethod()
{
return "Wow!";
}
}

class Zoo extends Moo
{
Zoo()
{
super(10);
System.out.println("SubClass Constructor!");
}

public String coolMethod()
{
return "Zoo Wow!";
}

public static void main(String[] args)
{
Zoo m = new Zoo();
System.out.println(m.coolMethod());
}
}

输出如下所示:

Parameterized Base Constructor!
SubClass Constructor!
Zoo Wow!

我所知道的是,“每当我们运行程序时,编译器都会在执行子构造函数之前执行基类默认构造函数”。但在这种情况下,首先调用参数化构造函数(而不是默认构造函数)。

所以我的问题是,编译器在执行基类构造函数之前是否会在子类构造函数中查找 super 关键字?

最佳答案

Does the compiler look for a super keyword in child class constructor before executing the base class constructor?

是的。

如果您没有提及任何super相关构造函数,则将调用默认值。另外提到的构造函数调用。

关于java - 在调用子类构造函数之前,编译器是否会在子类构造函数中查找 **super** 关键字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27266058/

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