OBS/Adminhilfe/Vererbung Objectpascal: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
Für diese Seite wurde eine Zugriffsbeschränkung eingerichtet. Falls du diese Nachricht siehst, bist du nicht berechtigt, diese Seite einzusehen.
override - overload - reintroduce - virtual
Böhrer (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
Böhrer (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
| Zeile 1: | Zeile 1: | ||
{{ | {{ZugriffOBS}}<font size="2" color="#000000" face="Arial"> </font> | ||
<div><center><font size="5" face="times new roman">'''override - overload - reintroduce - virtual'''</font></center></div><div><font size="3" face="times new roman">'''<br />'''<div><font size="3" face="times new roman">'''virtual'''</font><font size="3" face="times new roman"> und </font><font size="3" face="times new roman">'''dynamic'''</font><font size="3" face="times new roman"> besagen, daß diese Methode in Nachfahren </font><font size="3" face="times new roman">'''überschreibbar'''</font><font size="3" face="times new roman"> ist</font><br /><font size="3" face="times new roman"></font><br /><font size="3" face="times new roman">'''override'''</font><font size="3" face="times new roman"> sagt, daß diese Methode eine virtuelle/dynamische Methode eines Vorfahren </font><font size="3" face="times new roman">'''überschreiben'''</font><font size="3" face="times new roman"> soll</font><br /><font size="3" face="times new roman"></font><br /><font size="3" face="times new roman">'''abstract'''</font><font size="3" face="times new roman"> besagt, daß diese virtuelle/dynamische Mathode in der "ausgangsklasse" zwar </font><font size="3" face="times new roman">'''deklariert, aber nicht implementiert'''</font><font size="3" face="times new roman"> ist.</font><br /><font size="3" face="times new roman"></font><br /><font size="3" face="times new roman">'''overload'''</font><font size="3" face="times new roman"> besagt, daß es eine gleichnamige Methode gibt (natürlich mit anderen Parametern)</font><br /><font size="3" face="times new roman">und diese paralell/alternativ aufrufbar sind</font><br /><font size="3" face="times new roman"></font><br /><font size="3" face="times new roman">mit </font><font size="3" face="times new roman">'''reintroduce'''</font><font size="3" face="times new roman"> sagt man, daß es in den Vorfahren eine gleichnamige Methode gibt,</font><br /><font size="3" face="times new roman">man diese aber "absichtlich" </font><font size="3" face="times new roman">'''verdecken'''</font><font size="3" face="times new roman"> will. (ohne reintroduce würde der Compiler eine entsprechende Warnung anzeigen<div><font size="3" face="times new roman"><br /><div><font size="4" face="times new roman">'''Achtung Beispiel reintroduce zu vermeiden:'''<div><font size="4" face="times new roman">'''<br />'''<div><font size="3" face="times new roman">TKlasseA = class(TObject)</font><br /><font size="3" face="times new roman">function GetMD: TModelKlasseA; virtual; // überschreibbar machen</font><br /><font size="3" face="times new roman">end;</font><br /><font size="3" face="times new roman"></font><br /><font size="3" face="times new roman">TKlasseB = class(TKlasseA)</font><br /><font size="3" face="times new roman">function GetMD: TModelKlasseB;</font><font size="3" face="times new roman">''' override'''</font><font size="3" face="times new roman">; // Vorgänger wird überschrieben</font><br /><font size="3" face="times new roman">end;</font><br /><font size="3" face="times new roman">..</font><br /><font size="3" face="times new roman">function TKlasseA.GetMD: TModelKlasseA;</font><br /><font size="3" face="times new roman">begin</font><br /><font size="3" face="times new roman">// vorerst mal leer, kann/wird sich aber ändern. Nötig, weil abstract fehlt. </font><br /><font size="3" face="times new roman">// wird abstract gewünscht, dann besser die function für TKlasseA wegen Überflüssigkeit</font><br /><font size="3" face="times new roman">// gleich weglassen und erst in TKlasseB einführen. Ausnahme : es handelt sich um eine Komponentenklasse,</font><br /><font size="3" face="times new roman">// die verkauft werden soll etc.</font><br /><font size="3" face="times new roman">end;</font><br /><font size="3" face="times new roman"></font><br /><font size="3" face="times new roman">function TKlasseB.GetMD: TModelKlasseB;</font><br /><font size="3" face="times new roman">begin</font><br /><font size="3" face="times new roman">'''inherited;'''</font><font size="3" face="times new roman"> // zuerst GetMD von TKlasseA ausführen. Wird das weggelassen, dann wird TKlasseA.GetMD NICHT ausgeführt</font><br /><font size="3" face="times new roman">// der Krempel, den TKlasseB zusätzlich zu TKlasseA noch braucht</font><br /><font size="3" face="times new roman">end;</font><br /><font size="3" face="times new roman"></font><br /><font size="3" face="times new roman"></font><br /><font size="3" face="times new roman"><br />[[Category:html]] | <div><center><font size="5" face="times new roman">'''override - overload - reintroduce - virtual'''</font></center></div><div><font size="3" face="times new roman">'''<br />'''<div><font size="3" face="times new roman">'''virtual'''</font><font size="3" face="times new roman"> und </font><font size="3" face="times new roman">'''dynamic'''</font><font size="3" face="times new roman"> besagen, daß diese Methode in Nachfahren </font><font size="3" face="times new roman">'''überschreibbar'''</font><font size="3" face="times new roman"> ist</font><br /><font size="3" face="times new roman"></font><br /><font size="3" face="times new roman">'''override'''</font><font size="3" face="times new roman"> sagt, daß diese Methode eine virtuelle/dynamische Methode eines Vorfahren </font><font size="3" face="times new roman">'''überschreiben'''</font><font size="3" face="times new roman"> soll</font><br /><font size="3" face="times new roman"></font><br /><font size="3" face="times new roman">'''abstract'''</font><font size="3" face="times new roman"> besagt, daß diese virtuelle/dynamische Mathode in der "ausgangsklasse" zwar </font><font size="3" face="times new roman">'''deklariert, aber nicht implementiert'''</font><font size="3" face="times new roman"> ist.</font><br /><font size="3" face="times new roman"></font><br /><font size="3" face="times new roman">'''overload'''</font><font size="3" face="times new roman"> besagt, daß es eine gleichnamige Methode gibt (natürlich mit anderen Parametern)</font><br /><font size="3" face="times new roman">und diese paralell/alternativ aufrufbar sind</font><br /><font size="3" face="times new roman"></font><br /><font size="3" face="times new roman">mit </font><font size="3" face="times new roman">'''reintroduce'''</font><font size="3" face="times new roman"> sagt man, daß es in den Vorfahren eine gleichnamige Methode gibt,</font><br /><font size="3" face="times new roman">man diese aber "absichtlich" </font><font size="3" face="times new roman">'''verdecken'''</font><font size="3" face="times new roman"> will. (ohne reintroduce würde der Compiler eine entsprechende Warnung anzeigen<div><font size="3" face="times new roman"><br /><div><font size="4" face="times new roman">'''Achtung Beispiel reintroduce zu vermeiden:'''<div><font size="4" face="times new roman">'''<br />'''<div><font size="3" face="times new roman">TKlasseA = class(TObject)</font><br /><font size="3" face="times new roman">function GetMD: TModelKlasseA; virtual; // überschreibbar machen</font><br /><font size="3" face="times new roman">end;</font><br /><font size="3" face="times new roman"></font><br /><font size="3" face="times new roman">TKlasseB = class(TKlasseA)</font><br /><font size="3" face="times new roman">function GetMD: TModelKlasseB;</font><font size="3" face="times new roman">''' override'''</font><font size="3" face="times new roman">; // Vorgänger wird überschrieben</font><br /><font size="3" face="times new roman">end;</font><br /><font size="3" face="times new roman">..</font><br /><font size="3" face="times new roman">function TKlasseA.GetMD: TModelKlasseA;</font><br /><font size="3" face="times new roman">begin</font><br /><font size="3" face="times new roman">// vorerst mal leer, kann/wird sich aber ändern. Nötig, weil abstract fehlt. </font><br /><font size="3" face="times new roman">// wird abstract gewünscht, dann besser die function für TKlasseA wegen Überflüssigkeit</font><br /><font size="3" face="times new roman">// gleich weglassen und erst in TKlasseB einführen. Ausnahme : es handelt sich um eine Komponentenklasse,</font><br /><font size="3" face="times new roman">// die verkauft werden soll etc.</font><br /><font size="3" face="times new roman">end;</font><br /><font size="3" face="times new roman"></font><br /><font size="3" face="times new roman">function TKlasseB.GetMD: TModelKlasseB;</font><br /><font size="3" face="times new roman">begin</font><br /><font size="3" face="times new roman">'''inherited;'''</font><font size="3" face="times new roman"> // zuerst GetMD von TKlasseA ausführen. Wird das weggelassen, dann wird TKlasseA.GetMD NICHT ausgeführt</font><br /><font size="3" face="times new roman">// der Krempel, den TKlasseB zusätzlich zu TKlasseA noch braucht</font><br /><font size="3" face="times new roman">end;</font><br /><font size="3" face="times new roman"></font><br /><font size="3" face="times new roman"></font><br /><font size="3" face="times new roman"><br />[[Category:html]] | ||
---- | ---- | ||
[[Benutzer:Auto import|Auto import]] 15:18, 25. Aug. 2011 (CEST) | [[Benutzer:Auto import|Auto import]] 15:18, 25. Aug. 2011 (CEST) | ||
Version vom 8. Dezember 2011, 08:23 Uhr
Dies ist eine zugriffsgeschützte Seite.
FAQ
- System Überwachung
- DEP deaktivieren
- Darstellung unter Windows 7
- Einwahl auf Windows 2000 Server
- Preislisten
- Datenbank Sicherung
- Customize
- Zentrale
- Support Macro
- Service Debug
- Historienprotokoll (Datenänderung OBS)
- Fernwartungsprobleme
- Startparameter
- Fehler beim Kassenabschluss
- Diverse Informationen
Häufige Fehler FAQs
Allgemeines
Wiki Hilfe
Syntax
Wiki-Gruppen Benutzerlisten
MySQL
Programmierung und Mergen
Delphi
Einrichtung
Git/SmartGit
Programm Update
PAX
Nützliche Funktionen
SteVe
OBS-Administration / Installation
Einrichtung
MySQL
Dienste
Kasse/Notfallkasse
Replikation
Zentrale
Fleet-Management einrichten
OBS Umzug
Admin Funktionen
Service Firmen
F10
- A ras.pbk
- B Command Line Interpreter
- C File Zilla Benutzer XML erzeugen
- D1 OBS_UPDATE.EXE zum OBS Update Server hochladen
- D2 SUPPORT_MACRO zum OBS Update Server hochladen
- H1 Remote Service Protokoll-Übersicht (Alles)
- H Remote ServiceProtokoll-Übersicht
- I Remote Service Commands
- I1 (Admin) Globaler Hinweis für Updates
- J Liste der OBS Updates
- K Angemeldete Service Firmen
- L Systeminformationen einlesen
- M Kundendaten anzeigen
- M1 Kundendatenbankinformationen anzeigen
- N Kundendaten einlesen
- O Kunden-Update Informationen anzeigen
- P Modul Registrierung OBS
- Q App Verwaltung
- S1 Firmen Statistik Protokolle OBS
- S2 Statistik Notfallkassen
O Support
D Programmierer-Tools
V Crypt Autologin Edit
J Update Marko Lib/Pmode/Script Lib
kundenspezifische Anpassungen
OBS Protokolle
OBS DEMO
Shop-Administration
modified eCommerce
modified eCommerce 2.x
modified eCommerce 1.06
Amazon
VShop 4.0
Kundeninformationen
virtual und dynamic besagen, daß diese Methode in Nachfahren überschreibbar ist
override sagt, daß diese Methode eine virtuelle/dynamische Methode eines Vorfahren überschreiben soll
abstract besagt, daß diese virtuelle/dynamische Mathode in der "ausgangsklasse" zwar deklariert, aber nicht implementiert ist.
overload besagt, daß es eine gleichnamige Methode gibt (natürlich mit anderen Parametern)
und diese paralell/alternativ aufrufbar sind
mit reintroduce sagt man, daß es in den Vorfahren eine gleichnamige Methode gibt,
man diese aber "absichtlich" verdecken will. (ohne reintroduce würde der Compiler eine entsprechende Warnung anzeigen
override sagt, daß diese Methode eine virtuelle/dynamische Methode eines Vorfahren überschreiben soll
abstract besagt, daß diese virtuelle/dynamische Mathode in der "ausgangsklasse" zwar deklariert, aber nicht implementiert ist.
overload besagt, daß es eine gleichnamige Methode gibt (natürlich mit anderen Parametern)
und diese paralell/alternativ aufrufbar sind
mit reintroduce sagt man, daß es in den Vorfahren eine gleichnamige Methode gibt,
man diese aber "absichtlich" verdecken will. (ohne reintroduce würde der Compiler eine entsprechende Warnung anzeigen
Achtung Beispiel reintroduce zu vermeiden:
TKlasseA = class(TObject)
function GetMD: TModelKlasseA; virtual; // überschreibbar machen
end;
TKlasseB = class(TKlasseA)
function GetMD: TModelKlasseB; override; // Vorgänger wird überschrieben
end;
..
function TKlasseA.GetMD: TModelKlasseA;
begin
// vorerst mal leer, kann/wird sich aber ändern. Nötig, weil abstract fehlt.
// wird abstract gewünscht, dann besser die function für TKlasseA wegen Überflüssigkeit
// gleich weglassen und erst in TKlasseB einführen. Ausnahme : es handelt sich um eine Komponentenklasse,
// die verkauft werden soll etc.
end;
function TKlasseB.GetMD: TModelKlasseB;
begin
inherited; // zuerst GetMD von TKlasseA ausführen. Wird das weggelassen, dann wird TKlasseA.GetMD NICHT ausgeführt
// der Krempel, den TKlasseB zusätzlich zu TKlasseA noch braucht
end;
function GetMD: TModelKlasseA; virtual; // überschreibbar machen
end;
TKlasseB = class(TKlasseA)
function GetMD: TModelKlasseB; override; // Vorgänger wird überschrieben
end;
..
function TKlasseA.GetMD: TModelKlasseA;
begin
// vorerst mal leer, kann/wird sich aber ändern. Nötig, weil abstract fehlt.
// wird abstract gewünscht, dann besser die function für TKlasseA wegen Überflüssigkeit
// gleich weglassen und erst in TKlasseB einführen. Ausnahme : es handelt sich um eine Komponentenklasse,
// die verkauft werden soll etc.
end;
function TKlasseB.GetMD: TModelKlasseB;
begin
inherited; // zuerst GetMD von TKlasseA ausführen. Wird das weggelassen, dann wird TKlasseA.GetMD NICHT ausgeführt
// der Krempel, den TKlasseB zusätzlich zu TKlasseA noch braucht
end;
Auto import 15:18, 25. Aug. 2011 (CEST)