gpt4 book ai didi

java - 不明白为什么子类必须显式调用有参数的基类构造函数

转载 作者:行者123 更新时间:2023-11-29 07:05:52 26 4
gpt4 key购买 nike

子类被迫显式调用基类的构造函数似乎没有意义。如果用户可以创建自己的构造函数而不局限于基类,将会更加灵活。任何人都可以告诉我为什么在 JAVA 中强制执行此行为?这有什么好处?

class A
{
public A(String s)
{
System.out.println(s);
System.out.println("BASE parameter constructor");
}
}

class C extends A
{
public C(String s)
{
super(s);// why here compiler force to call constructor of base class
System.out.println("Sub parameter constructor");
}
}

最佳答案

因为基类没有默认从子类调用的无参数构造函数。

如果你只是这样做

public C(String s)
{
System.out.println("Sub parameter constructor");
}

然后一个对 super 构造函数的默认调用将被放置在那里,它将变成

public C(String s)
{
super();
System.out.println("Sub parameter constructor");
}

但是编译器不提供无参数构造函数,因为您已经定义了参数化构造函数,因为它仅在没有为该类提供其他构造函数时提供。

关于java - 不明白为什么子类必须显式调用有参数的基类构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19946973/

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