statische, dynamischer Typ von Variablen

Status
Nicht offen für weitere Antworten.

Han

Bekanntes Mitglied
Hallo....und zwar zweifle ich an der Richtigkeit eines im Skript gezeigten Beispiels.

Gegeben sei folgendes Szenario:

Code:
public class Timer {
//.........
}

public class ClockTimer extends Timer{
//......
}

public class DayTimer extends ClockTimer{
//....
}

public class Trigger extends Timer{
//....
}

So..und nun ist gefragt:

Was ist der statische und dynamische Typ der fettgedruckten Variablen?


DayTimer dayTimer = new DayTimer(..); statische: DayTimer, dynamische😀ayTimer (klar)
Timer timer = dayTimer; statische: Timer, dynamische😀ayTimer (klar)
ClockTimer clockTimer = dayTimer; statische: ClockTimer, dynamische😀ayTimer (wieso dynamische nicht Timer?)
timer = clockTimer; statische: DayTimer, dynamische😀ayTimer (wieso dynamische nicht ClockTimer?)

mfg,
Han
 
Die Begriffe "statischer und dynamischer Datentyp" habe ich so noch nicht gehört. Das Beispiel versucht aber offenbar, den Unterschiede zwischem dem Typ der Referenz (also der Typ der Variablen gemäß ihrer Deklaration) und dem Typ der Instanz (Objekteigenschaft, die lediglich bei der Erzeugung festgelegt wird und sich währed der Objekt-Lebensdauer nicht mehr ändert) zu unterscheiden:

Also:
statischer Typ = Typ der Referenz (auf dieser Basis macht der Compiler die Typprüfungen)
dynamischer Typ = Objekt-Typ (auf dieser Basis passieren die Laufzeit-Typprüfungen)

Im Beispiel ist der dynamische Typ auch im 3. und 4. Fall immer noch DayTimer, weil es sich immer noch um die selbe Instanz handelt, deren Typ sich niemals ändern kann.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben