vererbung und private

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo zusammen,
hab eigentlich nur eine "einfache" Frage:
Werden Attribute die als private gesetzt wurden vererbt?

thx
 

Bleiglanz

Gesperrter Benutzer
Ja, insofern dass das Feld vorhanden ist

Manipuliert werden kann es aber nur in der Oberklasse

=> praktisch völlig egal, da in den Unterklasse nicht sichtbar: man kann dort problemlos Variablen und Methoden mit dem gleichen Namen verwenden

also vielleicht ist "Nein" doch die bessere Antwort...
 
J

Jouhni

Gast
Eigentlich ist es doch so: private-Attribute werden vererbt, nur kann auf sie in Unterklassen nicht direkt zugegriffen werden, sondern nur über Getter-/Setter-Methoden.

Jouhni
 

SebiB90

Top Contributor
Bleiglanz hat gesagt.:
=> praktisch völlig egal, da in den Unterklasse nicht sichtbar: man kann dort problemlos Variablen und Methoden mit dem gleichen Namen verwenden
was ich mich schon immer frage, wenn ich jetzt eine private methode "überschreibe", naja überschreiben ist es ja nicht da ja unbekannt ist, aber man implementiert eine methode mit dem gleichen namen(und gleichen parametern)
in der oberklasse gibt es eine methode die diese private methode benutzt, wenn ich jetzt eine instanz der subklasse habe und jetzt die methode, die die private methode benutzt, von der oberklasse aufrufe, welche private methode wird dann aufgerufen? die von der oberklasse oder die von der unterklasse?
 
B

Beni

Gast
Probiers doch aus :wink:

Die Oberklasse benutzt ihre eigene private Methode, die Unterklasse die andere. Private Methoden kann man so gesehen gar nicht überschreiben.
 

rapthor

Bekanntes Mitglied
Beni hat gesagt.:
Die Oberklasse benutzt ihre eigene private Methode, die Unterklasse die andere. Private Methoden kann man so gesehen gar nicht überschreiben.

Man mag sie zwar nicht im eigentlichen Sinne überschrieben haben, aber der Effekt bleibt derselbe: Die Methode der Oberklasse bildet eine andere Funktionalität ab als die Methode der Unterklasse.

Will man das unbewusste, versehentliche Neudefinieren einer Methode in der Unterklasse verhindern, sollte man in der Oberklasse die Methode nicht nur private, sondern auch final deklarieren. Somit meldet der Compiler einen Fehler, wenn versucht wird, eine Methode gleichen Namens und gleicher Signatur in der erbenden Klasse zu definieren.
 

Bleiglanz

Gesperrter Benutzer
Will man das unbewusste, versehentliche Neudefinieren einer Methode in der Unterklasse verhindern
Warum sollte man das tun? Ist doch völlig egal??

wenn ich private foo() deklariert habe und meine Klasse in die Wildnis entlasse dann WEISS ein Anwender gar nichts davon und könnte versehentlich auch auf den Namen foo() kommen...

BTW: auch das final ändert nichts, der Compiler meckert nicht und man kann einen Namen ohne Probleme wiederverwenden
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben