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 !!