Vererbung Konstruktor nicht mit vererben

Abisjana

Mitglied
Heey,
ich stehe grad vor folgendem Problem und zwar hab ich grad mehrere Klassen mit Konstruktoren. Jedoch wenn ich mit "extends" versuche die Parameter von der einen Klasse zu erben, kann ich den Konstruktor in der Unterklasse nicht mehr verwenden, weil bei Eclipse dann folgender error steht : "Implicit super Constructor Person() is undefined. Must explicity invoke another Constructor"

Hier wie folgt :

Oberklasse:
Java:
public abstract class Person implements Druckbar {
       
    protected String name;
    protected String vorname;
    protected String email;
   
        public Person(String name, String vorname){
            this.name = name;
            this.vorname = vorname;
        }

Unterklasse:
Java:
public class Angestellter extends Person {
   
    private double gehalt;
    private String abteilung;
   
    public Angestellter(String name, String vorname) {
        this.name = name;
        this.vorname = vorname;
    }


Zusatzfrage : Wenn man eine abstracte Klasse erstellt und diese dann in eine andere Klasse implementieren will, muss diese Klasse dann auch als abstract deklariert werden?

Gruß
Abisjana
 

JCODA

Top Contributor
probier mal in der Angestellten-Klasse den Konstruktor von Person aufzurufen, etwa so:
Java:
public Angestellter(String name, String vorname) {
        super(name,vorname);    
    }

Denn falls du dies nicht tust, wird automatisch der Standardkonstruktor aufrufen, den gibt es aber in Person nicht und deswegen bekommst du diese Fehlermeldung.

Zusatzfrage : Wenn man eine abstracte Klasse erstellt und diese dann in eine andere Klasse implementieren will, muss diese Klasse dann auch als abstract deklariert werden?
Nein, solange alle abstrakte Methoden implementiert wurden, muss diese Klasse natürlich nicht abstrakt gemacht werden, sonst könnte man ja "nie" Instanzen von solchen Klassen erstellen.
 

Neue Themen


Oben