Vererbung von Attributen zwischen zwei Klassen

Feras

Aktives Mitglied
hi, wie kann ich die von einer Oberklasse "Nutzer" an eine Unterklasse "Student" vererbten Attribute aufrufen?

Java:
public class Nutzer {
	
	private String benutzername;
	private String passwort;
	private String name;
	private String vorname;
	private String emailAdresse;
	
	public void Nutzer(String benutzername, String passwort, String name,
			String vorname, String emailAdresse) {

		this.benutzername = benutzername;
		this.passwort = passwort;
		this.name = name;
		this.vorname = vorname;
		this.emailAdresse = emailAdresse;
	}

	public String holeBenutzername() {		
		return this.benutzername;
	}

	public String holePasswort() {
		return this.passwort;
	}

	public String holeName() {
		return this.name;
	}

	public String holeVorname() {
		return this.vorname;
	}

	public String holeEmailAdresse() {
		return this.emailAdresse;
	}

}


Java:
public class Student extends Nutzer {
	
	private int matrikelnummer;
	private String studiengang;

	public void Student(String benutzername, String passwort, String name,
			String vorname, String emailAdresse, String matrikelnummer,
			String studiengang) {
		
                   //hier in den Konstruktor möchte ich die geerbten Attribute aus der Oberklasse Nutzer einfügen. Aber wie?
	}


	public int holeMatrikelnummer() {
		return this.matrikelnummer;
	}

	public String holeStudiengang() {
		return this.studiengang;
	}

	public boolean equals(Object obj) {
		throw new UnsupportedOperationException("not implemented");
	}

}



Danke für eure Hilfe

MfG Feras
 
Entweder machst du die Attribute von der Klasse Nutzer "protected" statt "private".
Oder du rufst einer den Konstruktor der (Super)klasse "Nutzer" auf.

Java:
public Student(.....) {
    super(......);
    this.matrikelnummer = matrikelnummer;
    this.studiengang = studiengang;
}
 
Auf den ersten Blick würde ich sagen:

Java:
super(benutzername, passwort, name, vorname, emailAdresse);
this.martikelnummer = martikelnummer;
this.studiengang = studiengang;

Wobei zu beachten ist, dass martikelnummer als Konstruktorparameter ein String ist, in deiner Klasse aber ein int sein soll. Hast du dich vermutlich mal vertippt...
 
Hallo,

du musst die Sichtbarkeit der Klassenvariablen der Klasse Nutzer nur auf protected statt auf private setzen. Dann kannst du sie mit this.variable benutzen.
Bei private ist die Sichtbarkeit nur in der Klasse selbst. Auf mit protected deklarierte Variablen können auch Unterklassen zugreifen.

Gruß
SC
 
Also die Sichtbarkeit ist auf private vorgegeben. Und wie soll man das sonst lösen? Weil wenn ich die super verwenden erhalte ich die Fehlermeldung "Contructor call must be the first statement in a constuctor"

Java:
public class Student extends Nutzer {

	private int matrikelnummer;
	private String studiengang;

	public void Student(String benutzername, String passwort, String name,
			String vorname, String emailAdresse, String matrikelnummer,
			String studiengang) {

		super(benutzername, passwort, name, vorname, emailAdresse,
				matrikelnummer, studiengang);

	}

	public int holeMatrikelnummer() {
		return this.matrikelnummer;
	}

	public String holeStudiengang() {
		return this.studiengang;
	}

	public boolean equals(Object obj) {
		throw new UnsupportedOperationException("not implemented");
	}

}
 
Wie Saheeda schon gesagt hat: Konstruktoren besitzen keine Rückgabewerte.
Sprich du hast normale Methoden statt Konstruktoren deklariert.

Und die Fehlermeldung sagt dir doch eh schon das Problem: Der Aufruf "super(...)" muss an 1.Stelle stehen, danach kannst du all weiteren Zuweisungen usw. durchführen.
 

Zurück
Oben