OOP:继承与扩展
OOP: inheritance with extends
谁能告诉我为什么这段代码不正确?
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;
}
我没有发现错误,因为这正是我用来学习 oop java 的书中的解释。
您应该显式调用基 class 的构造函数,因为如果您不这样做,编译器会添加对基 class 的无参数构造函数的隐式调用,而这不会存在于你的案例中。
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;
}
}
简单来说
You cannot override constructor of super class in 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 !!
谁能告诉我为什么这段代码不正确?
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;
}
我没有发现错误,因为这正是我用来学习 oop java 的书中的解释。
您应该显式调用基 class 的构造函数,因为如果您不这样做,编译器会添加对基 class 的无参数构造函数的隐式调用,而这不会存在于你的案例中。
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;
}
}
简单来说
You cannot override constructor of super class in 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 !!