Vererbung.

Status
Nicht offen für weitere Antworten.

jan10101

Mitglied
Hallo ich habe hier zwei Klassen:

Code:
public abstract class X {
	private int a = 1;
	public void setA(int a) { this.a = a; }
}

Code:
public class XX extends X {
	private int a = 42;
	XX() {
		setA(19);
		System.out.println(a);
	}	
	public static void main(String[] args){
		XX test=new XX();
	}
}

Aber ich verstehe nicht, wieso dieses Programm 42 ausgibt. Die setA(int a)-Methode wird doch auch in die Klasse XX vererbt und müsste dann den a-Wert auf 19 setzen oder seh ich da was falsch?
 

byte

Top Contributor
setA() setzt das a aus der Oberklasse. Caste doch mal dein Objekt nach X und guck Dir a an, nachdem Du es über die Unterklasse per setA() gesetzt hast.
 

jan10101

Mitglied
Jo, hab den Thread gelesen. Versteh das aber trotzdem irgendwie nicht...

Die Variable a wird ja nicht vererbt, da sie private ist. Die Methode ist aber public und wird vererbt. Dann ist doch praktisch in der Klasse X eine Variable a, und die Methode setA(int a), die dann die Variable ändert...

Was versteh ich denn jetzt falsch? ^^
 

byte

Top Contributor
jan10101 hat gesagt.:
Was versteh ich denn jetzt falsch? ^^

Anscheinend das Prinzip der Vererbung. ;)

Ich habe das Gefühl, Du denkst, dass die Methode setA() durch die Vererbung irgendwie in Deine Unterklasse "kopiert" wird. Dem ist aber nicht so. Die Methode ist nur sichtbar in der Unterklasse, weil sie public ist. Die Variable a aus der Oberklasse ist zwar nicht sichtbar, aber sie ist trotzdem da. Deswegen setzt die setA() aus der Oberklasse auch weiterhin dieses a aus der Oberklasse und nicht Dein a aus der Unterklasse. Es würde auch überhaupt keinen Sinn machen, wenn das so funktionieren würde, wie Du Dir das vorstellst. Denn was würde denn dann setA() machen, wenns gar kein (neues) a in Deiner Unterklasse geben würde? Und was würde passieren, wenn Du auf X hochcastest?

Denk mal drüber nach! ;)
 

CelikBlek

Bekanntes Mitglied
Wenn du in der oberen Klasse die Variable private deklarierst, wird dieser nicht vererbt. Dafür gibt es ja auch den Konstrukt private. Deine Methode allerdings ist public und wird vererbt. Die Methode greift auf die Variable in der oberen Klasse und weisst nichts über die Variable von der Klasse XX.
Wenn du nun den Konstruktor XX aufrufst greift der auf seine eigene Variable zurück. Nicht auf die obere. Mit set also setzt du die Var auf X und ausgeben tust du aber die Var aus XX.
 

jan10101

Mitglied
Achso... hatte gedacht, die methode wird beim vererben in die erbende klasse kopiert... also danke für die Hilfe.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
U Vererbung?! Allgemeine Java-Themen 15
temi Problem mit Aufrufreihenfolge bei Vererbung Allgemeine Java-Themen 3
MiMa Vererbung und Komposition?? Allgemeine Java-Themen 38
Kirby.exe Vererbung bei Generics Allgemeine Java-Themen 7
L Vererbung Verständnis Probleme Vererbung Allgemeine Java-Themen 2
W Generics + Vererbung Allgemeine Java-Themen 47
M Vererbung mithilfe von Bluej Allgemeine Java-Themen 3
M List -Tableview-Javafx-Vererbung Allgemeine Java-Themen 35
A Vererbung Selbstreferenzparameter Allgemeine Java-Themen 14
D Thema: Vererbung Ober-/Unterklassen Allgemeine Java-Themen 16
D Frage zu Vererbung Allgemeine Java-Themen 5
N Vererbung mit GUI Allgemeine Java-Themen 9
E Vererbung Countable mit Vererbung Allgemeine Java-Themen 6
J 2 Fragen zur Vererbung Allgemeine Java-Themen 5
T Javaklassen und vererbung Allgemeine Java-Themen 32
F Vererbung Allgemeine Java-Themen 5
Neumi5694 Vererbung Restriktive Vererbung Allgemeine Java-Themen 4
A Vererbung Übungsaufgabe Vererbung - Erstellung Klassenhierarchie Allgemeine Java-Themen 1
J Allgemeine Fragen zu Vererbung Allgemeine Java-Themen 1
kaoZ Generics und Vererbung Allgemeine Java-Themen 3
D Problem bei Vererbung abstrakter Klassen Allgemeine Java-Themen 6
D Object nach Vererbung mit Class Object überprüfen Allgemeine Java-Themen 4
T Super Klasse Vererbung Problem :/ Allgemeine Java-Themen 10
L Unabhängige Auslieferung bei Vererbung Allgemeine Java-Themen 20
S MVC - Vererbung Allgemeine Java-Themen 4
C Enums und Vererbung Allgemeine Java-Themen 6
F Google Guice + Generics + Vererbung Allgemeine Java-Themen 5
D Unterschied Vererbung und Polymorphie? Allgemeine Java-Themen 4
K Vererbung ohne Basisklasse zu kennen Allgemeine Java-Themen 20
Da_Tebe ArrayList<xyz> Verschachtelung oder Vererbung? Allgemeine Java-Themen 6
faetzminator statische Variablen in Interface - Vererbung? Allgemeine Java-Themen 9
M OOP PropertyChangeListener - Vererbung oder Komposition? Allgemeine Java-Themen 5
S OOP Mehrfache Vererbung von abstrakten Klassen Allgemeine Java-Themen 7
G Designfrage Vererbung ja oder nein Allgemeine Java-Themen 9
S equals - Identität ändern bei Vererbung? Allgemeine Java-Themen 5
dayaftereh Vererbung Hilfe Allgemeine Java-Themen 2
D Vererbung, Reflection und automatischer Methodenaufruf Allgemeine Java-Themen 24
A PropertyChangeListener Vererbung Allgemeine Java-Themen 4
P DefaultTreeCellRenderer Vererbung Allgemeine Java-Themen 5
S Objekte die Objekte enthalten: Keine Vererbung Allgemeine Java-Themen 4
J Vererbung bei abstrakten Klassen Allgemeine Java-Themen 2
S Vererbung: Welche Methode wird verwendet? Allgemeine Java-Themen 9
L Checkstyle: Wann ist eine Methode für Vererbung entworfen? Allgemeine Java-Themen 13
S normale vererbung als interface Allgemeine Java-Themen 2
S statische Methoden und Vererbung Allgemeine Java-Themen 6
R Vererbung - doppelte Paint-Methode Allgemeine Java-Themen 4
R Vererbung mit Interface und Abstract Allgemeine Java-Themen 3
B Vererbung bei enums ? Allgemeine Java-Themen 3
W Frage zu Vererbung / konkretes Beispiel Allgemeine Java-Themen 4
F Vererbung von SessionBeans Allgemeine Java-Themen 3
O abstract, privat, Vererbung Allgemeine Java-Themen 29
L Annotations mit Vererbung Allgemeine Java-Themen 4
M Singleton und Vererbung? Allgemeine Java-Themen 45
T Problem mit Vererbung Allgemeine Java-Themen 3
V Vererbung und Schleifen Allgemeine Java-Themen 5
C Comparable + Vererbung Funktioniert nicht? Allgemeine Java-Themen 4
A Ansatz Objektorientierung, Methoden Vererbung Allgemeine Java-Themen 2
D Listen von Generischen Typen inkl. Vererbung Allgemeine Java-Themen 2
D Zugriffsmethode nach Vererbung ändern? Allgemeine Java-Themen 5
S Vererbung in UML Allgemeine Java-Themen 3
T Nochmal Frage zu Vererbung Interfaces etc. Allgemeine Java-Themen 10
Y Gedanken zur Vererbung Allgemeine Java-Themen 7
F Vererbung, Generizität und Collections. Allgemeine Java-Themen 7
G Frage zu statischen Variablen bei Vererbung Allgemeine Java-Themen 15
F Vererbung Allgemeine Java-Themen 5
S Vererbung von mehreren Klassen? Allgemeine Java-Themen 5
C enum und Vererbung Allgemeine Java-Themen 3
K Problem mit Vererbung - Kein wirklicher Nutzen. Allgemeine Java-Themen 10
G vererbung vs benutzung Allgemeine Java-Themen 7
L Vererbung klappt nicht Allgemeine Java-Themen 5
W Probleme mit Arrays und Vererbung ! Allgemeine Java-Themen 5
M vererbung einer "selbst-instanzierungs-klasse" Allgemeine Java-Themen 16
H Frage zur Vererbung Allgemeine Java-Themen 5
S private Instanzvaribalen bei "Innerer-Vererbung" Allgemeine Java-Themen 9
H Vererbung auch ohne erzeugung einer Instanz möglich? Allgemeine Java-Themen 3
M frage zur vererbung Allgemeine Java-Themen 12
G Generics und Vererbung. Allgemeine Java-Themen 21
M Vererbung von Hashtables Allgemeine Java-Themen 5
C dynamische Vererbung Allgemeine Java-Themen 6

Ähnliche Java Themen

Neue Themen


Oben