java - 有没有一种方法可以调用从没有自己的构造函数的子类获取参数的父类构造函数?

标签 java inheritance constructor super

众所周知,父类必须先于子类构造;如果父类的构造函数带有参数,则必须显式调用父类的构造函数。我的问题是,如果子类本身没有构造函数,您如何调用从子类显式获取参数的父类构造函数?

public class A {
public String text;

public A(String text) {
    this.text = text;
}
}


public class B extends A {
// Now I must call the constructor of A explicitly (other wise I'll get a
// compilation error) but how can I do that without a constructor here?
}

最佳答案

答案是:你不能!

如果父类(super class)有一个无参数构造函数,编译器也可以在子类中为您添加一个类似的构造函数。

但是当父类(super class)需要参数时,编译器不知道这些应该从哪里来。

因此:考虑向父类(super class)添加一个无参数构造函数,它可以调用另一个构造函数并传递某种默认值。或者,您可以在派生类中执行相同的操作。

郑重声明:没有没有构造函数的 Java 类。只是编译器可能会在幕后为您创建一个。从这个角度来看,你的问题没有多大意义。

关于java - 有没有一种方法可以调用从没有自己的构造函数的子类获取参数的父类构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54339113/

相关文章:

Java - 内部类构造函数 - 仅允许外部类

java - 使用 NTLM 身份验证使用 soap 服务

java - 使用 java 和 XPath 搜索 xml 文档中的属性

java - 用 do while 循环提示,似乎无法进入循环

javascript - Object 和 String 原型(prototype)不是定义字符串的原型(prototype)吗?

ios - 'isSubclassOfClass' 在 NSObject 中定义时如何不是有效的选择器?

c# - 如何使用泛型类型的子类初始化泛型属性?

c++ - 无法将变量 't' 声明为抽象类型 'AddSalariedEmployee'

java - 集合删除方法不提供并发修改异常

javascript - 使用 getter 和 setter 将参数复制到对象实例