Unterschied dynamischer und statischer Laufzeittyp

tvsn

Neues Mitglied
Hallo, ich bräuchte Hilfe bei dieser Aufgabe
Klassenmodell:
Superklasse Tier (abstract) mit 2 Subklassen Hund und Katze

Die Klasse Zoo besitzt das folgende Attribut:
Tier[][] gehege=new Tier[10][10]
Mit der folgenden Methode werden die Tiere gefüttert:
Java:
public void fuettern() {
  for (Tier[] tv : gehege)
    for(Tier t : tv)
      t.fuettern();
}
Welchen statischen Typ hat die Variable t?
Angenommen das Gehege ist nur mit Hunden belegt. Welchen dynamischen Typ hat die Variable t dann bei Aufruf von fuettern?
Welche Typen kommen als dynamische Typen für t in Frage?

Wie antworte ich darauf? Ich verstehe noch nicht ganz den Unterschied von statisch und dynamisch.
 
Zuletzt bearbeitet von einem Moderator:
Der statische Typ ist jener Typ, mit dem du die Variable deklariert hast. In deinem Fall hast du in der 3. Zeile "Tier t" stehen. Also ist Tier der statische Typ.

Der dynamische Typ ist jener Typ mit dem das Objekt erstellt wurde. Wenn du lauter Hunde im Gehege hast, dann kann t nur Hund als dynamischen Typ haben.

Als dynamische Typen kommen alle Typen in Frage, die von Tier abgeleitet sind. Also : Hund und Katze. Wenn Tier nicht abstrakt wäre, käme auch Tier in Frage.
Da Tier aber abstrakt ist, kannst du keine Objekte mit dem Typ Tier erzeugen.
 

Zurück
Oben