Einzelnen Beitrag anzeigen

Antigo

Registriert seit: 14. Mär 2005
274 Beiträge
 
#1

Java: Vererbung/Überschreibung

  Alt 24. Jul 2009, 17:49
Hi,

kurze Verständnisfrage zum Thema überschreiben in Java. Habe folgende Klassenhierarchie:

Delphi-Quellcode:
class TNode {
   public T data;

   public void setData(T d) {
      data = d;
   }


}

class TDNode extends TNode {
   public Link prev;
   static int counter = 0;


   public void setData(T d) {
      super.setData(d);
      counter++;
   }

}

Meine Frage: Wieso kann ich in der TDNode Klasse in der setData Methode das setData der Oberklasse TNode aufrufen? In meinen Vorlesungsunterlagen steht:
Zitat:
- Zugriff super.name in einer Methode von Klasse C, die B als unmittelbare Oberklasse hat
- Dies ist einfach eine Abkürzung für((B) this).name!
Allerdings wird doch setData in der der Unterklasse TDNode überschrieben, sodass man auch durch einen Cast nichtmehr an die Methode aus TNode herankommt.

Hierzu hab ich folgendes Beispiel im Web gefunden:
Delphi-Quellcode:
class Ober
{ String id = "ooo";
  String WhoAreYou()
  { return "Ober";
  }

}
class Unter extends Ober
{ String id = "uuu";
  String WhoAreYou()
  { return "Unter";
  }

  
  void identify()
  { Unter u = new Unter();
    Ober o = u;
    System.out.println(o.id);
    System.out.println(u.id);
    System.out.println(o.WhoAreYou());
    System.out.println(u.WhoAreYou());
  }


Ausgabe von new Unter().identify():

   ooo
   uuu
   Unter
   Unter
Hier ists ja das gleiche Prinzip. Ich Caste in die Oberklasse und rufe die Methode auf. Es wird aber die Methode der Unterklasse aufgerufen, weil diese ja die Methode der Oberklasse überschrieben hat.

Kann mir da jemand weiterhelfen?
Michael
"How should I know if it works? That's what beta testers are for. I only coded it."
  Mit Zitat antworten Zitat