Werden die privaten Atribute wirklich geerbt?

1 Antwort

Vom Fragesteller als hilfreich ausgezeichnet
werden die privaten Atribute bei einer Unterklasse von der Oberklasse geerbt?

Wirf mal einen Blick in die JLS. Dort findest du Folgendes:

Members of a class that are declared private are not inherited by subclasses of that class.
A private field of a superclass might be accessible to a subclass - for example, if both classes are members of the same class. Nevertheless, a private field is never inherited by a subclass.

Das heißt im Klartext, private Attribute werden niemals vererbt. Es ist schon so, dass im RAM die privaten Attribute im Objekt enthalten sind, dies bezeichnet man aber nicht als Vererbung im klassischen Sinne, weil private Attribute nicht sichtbar sind. Man kann auf sie aus der Subklasse heraus nicht zugreifen.

Und wie kann man Zugang zu den privaten Atributen einer Oberklasse bei einer Unterklasse durch sie (Oberklasse) haben?

Dafür gibt es sogenannte Getter und Setter. Über diese kannst du Zugriff auf private Attribute erhalten:

class A {
  private int x = 0;

  public void setX(int x) {
    this.x = x;
  }

  public int getX() {
    return x;
  }
}

class B extends A {

}

Das klappt nicht:

B b = new B();
b.x = 5;
System.out.println(b.x);

Das hingegen schon:

B b = new B();
b.setX(5);
System.out.println(b.getX());

So allein ergeben Getter und Setter meist wenig Sinn. Hier findest du detailliertere Ausführungen zu der Thematik.

Was möchtest Du wissen?