Hi,
in dem Kapitel Vererbung im Handbuch, steht ganz unten etwas über Cast. Das habe ich irgendwie nicht verstanden. Kann mir jemand dazu etwas sagen?
cast
Moderator: Moderatoren
- Manfred
- Foren-Administrator
- Beiträge: 21186
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
cast
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Martin Altmann
- Foren-Administrator
- Beiträge: 16509
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Hallo Manfred,
ich denke mal, das ist auch beabsichtigt
Es gibt immer mehrere Möglichkeiten, etwas so zu schreiben, dass es möglichst nicht verstanden wird (meist gibt es dafür auch gute Gründe) - und diese Beschreibung ist ein Paradebesipiel dafür
Wenn ich ehrlich bin, verstehe ich es auch nicht.
Aber zum Thema Vererbung und Cast (im eigentlichen Sinne - ob das hier auch so gemeint ist...):
Wenn Du eine Klasse vererbst, dann hat Deine Klasse eine sogenannte Superklasse (die, von der sie selber abstammt). Wenn man nun eine Mehode überlagert (also in seiner eigenen Klasse neu/anders definiert), dann kann (und sollte man unter Umständen auch - je nach Anwendung) in seiner Methode auch die überlagerte Methode aus der Superklasse aufrufen. Dies ist dann (auch) ein cast auf die Methode der anderen Klasse.
Außerhalb der Vererbung bedeutet cast einfach Typumwandlung - also z.B.:
Viele Grüße,
Martin
ich denke mal, das ist auch beabsichtigt
Es gibt immer mehrere Möglichkeiten, etwas so zu schreiben, dass es möglichst nicht verstanden wird (meist gibt es dafür auch gute Gründe) - und diese Beschreibung ist ein Paradebesipiel dafür
Wenn ich ehrlich bin, verstehe ich es auch nicht.
Aber zum Thema Vererbung und Cast (im eigentlichen Sinne - ob das hier auch so gemeint ist...):
Wenn Du eine Klasse vererbst, dann hat Deine Klasse eine sogenannte Superklasse (die, von der sie selber abstammt). Wenn man nun eine Mehode überlagert (also in seiner eigenen Klasse neu/anders definiert), dann kann (und sollte man unter Umständen auch - je nach Anwendung) in seiner Methode auch die überlagerte Methode aus der Superklasse aufrufen. Dies ist dann (auch) ein cast auf die Methode der anderen Klasse.
Außerhalb der Vererbung bedeutet cast einfach Typumwandlung - also z.B.:
Code: Alles auswählen
a := 1.5
b := int( a )
Martin
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
- Manfred
- Foren-Administrator
- Beiträge: 21186
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Moin Martin,
aha.....
Typumwandlung habe ich schon mal gehört.
aha.....
Typumwandlung habe ich schon mal gehört.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- brandelh
- Foren-Moderator
- Beiträge: 15695
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 65 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Hallo Martin,
CAST = Typumwandlung, das werde ich mir merken.
Im Vererbungsbeispiel ist es der Aufruf der Superklasse.
Intern wird dieser Ausdruck wohl mit Nachrichten erledigt, daher die Aussage CAST = Senden an ein Object.
oMySLE:caption fragt die Instanzvariable caption ab.
Nun kommt es aber z.B. bei Comboboxen vor, dass 2 Superklassen existieren und jede die gleiche Methode ( hier getData() ) hat.
oMyComboBox:getdata() -> greift auf den Listboxteil zu ... wenn ich jetzt aber den Inhalt des SLE Teils will muss ich CASTen ...
oMyComboBox:XbpSle:getdata()
Bei eigenen / abgeleiteten Klassen muss man entscheiden, ob man das Standardverhalten nur leicht ändern oder komplett neu haben will.
Wobei letzteres natürlich zu Problemen führen kann...
Verhalten ändern :
MyClass:X_Method(x1,x2)
... mach was ...
::SuperClass:X_Method(x1,x2) // Standardverhalten einbauen - CAST
... noch was...
return self
oder ganz neu machen
MyClass:X_Method(x1,x2)
... mach was ...
// KEIN Aufruf ::SuperClass:X_Method(x1,x2)
... noch was...
return self
CAST = Typumwandlung, das werde ich mir merken.
Im Vererbungsbeispiel ist es der Aufruf der Superklasse.
Intern wird dieser Ausdruck wohl mit Nachrichten erledigt, daher die Aussage CAST = Senden an ein Object.
oMySLE:caption fragt die Instanzvariable caption ab.
Nun kommt es aber z.B. bei Comboboxen vor, dass 2 Superklassen existieren und jede die gleiche Methode ( hier getData() ) hat.
oMyComboBox:getdata() -> greift auf den Listboxteil zu ... wenn ich jetzt aber den Inhalt des SLE Teils will muss ich CASTen ...
oMyComboBox:XbpSle:getdata()
Bei eigenen / abgeleiteten Klassen muss man entscheiden, ob man das Standardverhalten nur leicht ändern oder komplett neu haben will.
Wobei letzteres natürlich zu Problemen führen kann...
Verhalten ändern :
MyClass:X_Method(x1,x2)
... mach was ...
::SuperClass:X_Method(x1,x2) // Standardverhalten einbauen - CAST
... noch was...
return self
oder ganz neu machen
MyClass:X_Method(x1,x2)
... mach was ...
// KEIN Aufruf ::SuperClass:X_Method(x1,x2)
... noch was...
return self
Gruß
Hubert
Hubert