2016-07-18 8 views
4

Ich habe Schwierigkeiten, eine Person-Klasse zu einem Patienten-Klasse erweiternWie erweitere ich eine Klasse mit einem anderen Konstruktor?

Ich habe eine Person-Klasse mit einem Konstruktor, die wie

public Person(String firstname,String surname) { 
     fFirstname=firstname; 
     fSurname=surname; 
    } 

Ich habe dann ein Patient Klasse

public class Patient Person erstreckt

ich möchte für einen Patienten einen Konstruktor haben suchen grob wie

public Patient(String hospNumber) { 
    fFirstname = lookup(hospNumber,"firstname"); 
    fSurname = lookup(hospNumber,"surname"); 
} 

Allerdings bekomme ich eine Beschwerde, dass der Patient Konstruktor benötigt (String, String). Ich kann sehen, warum das ist, aber kann nicht sehen, wie man die Personenklasse für einen Patienten erweitert.

Antwort

4

Geben Sie einfach das Ergebnis der beiden letztgenannten Verfahren zum super Konstruktor ruft:

public Patient(String hospNumber) { 
    super(lookup(hospNumber,"firstname"), lookup(hospNumber,"surname")); 
} 

Diese Methoden haben statisch sein, da die this sie sonst auf aufgerufen wurde noch nicht gebaut worden, wenn sie‘ wieder aufgerufen.

+0

Ich hatte es versucht, aber hatte die zwei Zeilen erstellen fFirstname und fSurname vor dem Super (fFirstname, fSurname) dies generierte einen Fehler, der besagt, dass super die erste Zeile sein musste. Ihr Vorschlag funktioniert gut. Danke –

+1

@TonyWolff super muss immer die erste Zeile sein. – Arjit

2

Entweder können Sie

public Person() { 

} 

Oder

Sie müssen rufen Konstruktor die Klasse Person mit super Verfahren als ein 2-arg Konstruktor

public Patient(String hospNumber) { 
    super(lookup(hospNumber,"firstname"), lookup(hospNumber,"firstname")); 
} 
2
einen Standardkonstruktor in Person Klasse

Ändern Sie den Patientenkonstruktor auf diesen.

public Patient(String hospNumber) { 
    super(lookup(hospNumber,"firstname"), lookup(hospNumber,"surname")); 
} 

Aber die lookup Methode muss statisch sein, um dies zu tun. Sonst werden Sie es ändern müssen:

public Patient(String hospNumber, String firstname, String surname) { 
    super(firstname,surname); 
} 

oder etwas ähnliches.

Schließlich können Sie der Person-Klasse noch einen weiteren Konstruktor hinzufügen. wie Person() und legen Sie den Rest der Details später. Auf diese Weise müssen Sie nicht einmal super() auf den Konstruktor des Patienten schreiben.

Anmerkungen zur Seite: Eine Klasse kann mehr als 1 Konstruktoren haben, solange sie nicht dieselben Parameter haben.

super() ruft den Konstruktor der Superklasse auf (die Klasse, von der diese Klasse erbt).