class A{
A(String s){
System.out.println("New A" + s);
}
public static void main(String[] args){
}
}
class B{
B(String s){
System.out.println("New B" + s);
}
public static void main(String[] args){
}
}
class C extends A{
C(String s){
System.out.println("New C" + s);
}
public static void main(String[] args){
}
}
第 28 行“C(String s){”出现错误
我正在按照类(class)的步骤进行练习。很困惑。非常感谢您帮助解决这个愚蠢的问题。
最佳答案
发生这种情况是因为 C 扩展了 A。为了正确扩展,您还需要调用 A 的构造函数。A 唯一可用的构造函数是 A(String s)
。以下内容应该有效:
C(String s){
super(s); // calls new A(s)
System.out.println("New B" + s);
}
基本上,当您在子类(本例中为 C)中创建构造函数时,需要调用父类(super class)构造函数来设置与 A 相对应的“对象的一部分”(由于缺乏更好的术语) 。当您没有显式调用父类(super class)构造函数时,它将自动调用不带任何参数的 super()
- 仅当存在构造函数 A()< 时才有效。/
。 1
1 这很复杂,因为如果您根本不在父类(super class)中创建构造函数,它实际上将具有一个隐式构造函数,其内容如下: public A() {}
,这意味着它不带任何参数,也不执行任何特定操作。
关于java - A 类中的构造函数 A 不能应用于给定类型;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28653374/