| 

.NET C# Java Javascript Exception

2
In einer abgeleiteten Klasse, in der ich ein Feld mit dem gleichen Namen wie in der Basisklasse einführe, kann ich mit super.feldname trotzdem auf das verdeckte Feld zugreifen. Gibt es einen Weg, um auch in einer Anwendung, die ihrerseits die abgeleitete Klasse instanziert, auf das verdeckte Feld der Basisklasse zuzugreifen?
News:
09.07.2012
FireFighter 21 1 3
1 Antwort
0
Das sollte in etwa so gehen:

public class A
{
protected int myField;
}

public class B extends A
{
public B(){
super.myField = 1;
}
public int getMyField()
{
return super.myField;
}
}

public class Other
{
public void doSomething(){
B b = new B();
System.out.println(b.getMyField());

}
}


Damit verletzt du aber sehr deutlich die Kapselung der Basisklasse A. Der Autor dieser Klasse wird ja einen Grund gehabt haben, das Feld nicht nach außen zu geben.
Von daher sollte man eventuell das Design der Klassen nochmal überdenken.

Unter http://ideone.com/TgEqE findest du ein funktionierendes Beispiel dafür.
12.07.2012
carlptr 777 1 8
carlptr 777 1 8
Wobei, wenn in A das Feld gar nicht in Unterklassen zugreifbar sein sollte, dann würde man das über private und entsprechende protected/public get/set machen.
dadadom 13.07.2012

Stelle deine Java-Frage jetzt!