有人能告诉我为什么这段代码不正确吗?
public class Boss extends Angestellter {
Boss(String v, String n, int a) { // ERROR **
vorname = großKleinSchreibung(v);
nachname = großKleinSchreibung(n);
alter = a;
}
}
**隐式超级构造函数Angestellter()未定义。必须显式调用另一个构造函数
public class Angestellter {
protected String vorname;
protected String nachname;
public int alter;
Angestellter(String v, String n, int a) {
this.vorname = großKleinSchreibung(v);
this.nachname = großKleinSchreibung(n);
this.alter = a;
}
我没有找到错误,因为它正是如何在书中解释我使用java学习oop。
答案 0 :(得分:4)
您应该显式地调用基类的构造函数,因为如果您不这样做,编译器会添加对基类的无参数构造函数的隐式调用,这在您的情况下不存在。< / p>
public class Boss extends Angestellter {
Boss(String v, String n, int a) {
super (v,n,a);
vorname = großKleinSchreibung(v);
nachname = großKleinSchreibung(n);
alter = a;
}
}
答案 1 :(得分:0)
简单来说就是
您无法覆盖JAVA中超类的构造函数
这是你的小修改代码!!
public class Angestellter {
protected String vorname;
protected String nachname;
public int alter;
Angestellter(String v, String n, int a) {
this.vorname = großKleinSchreibung(v);
this.nachname = großKleinSchreibung(n);
this.alter = a;
}
...
}
public class Boss extends Angestellter {
... Other methods
}
// In main
Angestellter myObj = new Boss("asd","as",1); // It will call constructor itself ... because it is inherited !!