G
Guest
Gast
Hallo,
ich habe ein Problem mit vererbung. Es handelt sich um ein Problem was beim Programmieren von JFace aufgetreten ist aber auch in normalen Java Klassen nicht anders ist.
Also ich versuche es mal an einem simplen Beispiel zu erklären.
Ich habe eine Oberklasse Person mit einem Konstruktor (String name, String vorname). Jetzt habe ich eine Klasse Student die davon erbt.
Diese Klasse muss ja nun den Konstruktor von Person als erstes im eigenen Konstruktor aufrufen. Und genau da liegt mein Problem. Ich möchte die Parameter, auch wenn das in dem Beispiel etwas unsinnig ist vorbelegen. Also in Studentkonstruktor habe ich noch nen int Parameter mehr. Je nach int Wert sollen für name und vorname andere Parameter gesetzt werden. Habe schon versucht einen zweiten Konstruktor zu definieren und dort erst meine vorbelegung zu starten und dann den ersten konstruktor aufzurufen, nur geht das nicht, jedenfalls nicht mit dem Aufruf
das geht nicht es kommen 2 fehlermeldungenim oberen Konstruktor. die erste sagt es gibt diese Methode Student(String, String) nicht und die zweite ich müsste den super Konstruktor explizit aufrufen.
Das ganze mit sinnlos werten zu initialisieren und später über super.setVorname(String vorname) geht auch nicht weil es die setMethode nicht gibt. Da ich aber eigentlich so gut wie alle Methoden der suer Klasse verwendne will und nur ein zwei methoden überschreiben möchte, kann ich ja nicht einfach die Variable neu anlegen, Denn dann greift er ja bei methoden welche in der superklasse aufgerufen werden auf den parameter der super Klasse zu und nicht auf meine? Wie kann ich das Problem lösen?
ich habe ein Problem mit vererbung. Es handelt sich um ein Problem was beim Programmieren von JFace aufgetreten ist aber auch in normalen Java Klassen nicht anders ist.
Also ich versuche es mal an einem simplen Beispiel zu erklären.
Ich habe eine Oberklasse Person mit einem Konstruktor (String name, String vorname). Jetzt habe ich eine Klasse Student die davon erbt.
Diese Klasse muss ja nun den Konstruktor von Person als erstes im eigenen Konstruktor aufrufen. Und genau da liegt mein Problem. Ich möchte die Parameter, auch wenn das in dem Beispiel etwas unsinnig ist vorbelegen. Also in Studentkonstruktor habe ich noch nen int Parameter mehr. Je nach int Wert sollen für name und vorname andere Parameter gesetzt werden. Habe schon versucht einen zweiten Konstruktor zu definieren und dort erst meine vorbelegung zu starten und dann den ersten konstruktor aufzurufen, nur geht das nicht, jedenfalls nicht mit dem Aufruf
Code:
public Student(int flag)
{
String name , vorname;
if (flag == 0)
{
name = "Meier";
vorname = "Nora";
}else
{
name = "Meier";
vorname = "Hans";
}
Student(name, vorname);
}
Student(String name, String vorname)
{
super(name,vorname)
}
das geht nicht es kommen 2 fehlermeldungenim oberen Konstruktor. die erste sagt es gibt diese Methode Student(String, String) nicht und die zweite ich müsste den super Konstruktor explizit aufrufen.
Das ganze mit sinnlos werten zu initialisieren und später über super.setVorname(String vorname) geht auch nicht weil es die setMethode nicht gibt. Da ich aber eigentlich so gut wie alle Methoden der suer Klasse verwendne will und nur ein zwei methoden überschreiben möchte, kann ich ja nicht einfach die Variable neu anlegen, Denn dann greift er ja bei methoden welche in der superklasse aufgerufen werden auf den parameter der super Klasse zu und nicht auf meine? Wie kann ich das Problem lösen?