| Autor |
Beitrag |
Marco D.
      
Beiträge: 2750
Windows Vista
Delphi 7, Delphi 2005 PE, PHP 4 + 5 (Notepad++), Java (Eclipse), XML, XML Schema, ABAP, ABAP OO
|
Verfasst: Do 09.08.07 09:50
Ich wollte mich über die Schlüsselwörter abstract, override und static informieren und habe hier nachgeschaut.
Also:
Wenn in der Mutterklasse eine Methode als abstract deklariert ist, muss in der Tochterklasse selbige als override deklariert werden und kann dann überschrieben werden.
Und virtual erlaubt das Überschreiben erst. Gibt es auch abstrakte Methoden, die nicht virtuell sind?
_________________ Pascal keeps your hand tied. C gives you enough rope to hang yourself. C++ gives you enough rope to shoot yourself in the foot
Zuletzt bearbeitet von Marco D. am Do 09.08.07 10:10, insgesamt 1-mal bearbeitet
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Do 09.08.07 09:54
Ja, einfach das "abstract" weglassen
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32:
| TParent = class public procedure DoFoo; virtual; end;
TChild = class public procedure DoFoo; override; end;
...
procedure TParent.DoFoo; begin ShowMessage('TParent.DoFoo'); end;
procedure TChild.DoFoo; begin ShowMessage('TChild.DoFoo'); end;
...
var something : TParent; begin something := TChild.Create; something.DoFoo; TParent(something).DoFoo; end; |
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
Martok
      
Beiträge: 3661
Erhaltene Danke: 604
Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
|
Verfasst: Do 09.08.07 10:00
_________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
|
|
Marco D. 
      
Beiträge: 2750
Windows Vista
Delphi 7, Delphi 2005 PE, PHP 4 + 5 (Notepad++), Java (Eclipse), XML, XML Schema, ABAP, ABAP OO
|
Verfasst: Do 09.08.07 10:01
Okay thx. Es gibt aber virtuelle Methoden, die nicht abstrakt sind? Das zeigt ja Christians Posting 
_________________ Pascal keeps your hand tied. C gives you enough rope to hang yourself. C++ gives you enough rope to shoot yourself in the foot
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Do 09.08.07 10:05
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
Martok
      
Beiträge: 3661
Erhaltene Danke: 604
Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
|
Verfasst: Do 09.08.07 10:08
Mist...
ich hab mich so gefreut, dich mal korrigieren zu dürfen, und nun das... pfui, Marco 
_________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
|
|
Marco D. 
      
Beiträge: 2750
Windows Vista
Delphi 7, Delphi 2005 PE, PHP 4 + 5 (Notepad++), Java (Eclipse), XML, XML Schema, ABAP, ABAP OO
|
Verfasst: Do 09.08.07 10:10
_________________ Pascal keeps your hand tied. C gives you enough rope to hang yourself. C++ gives you enough rope to shoot yourself in the foot
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Do 09.08.07 10:12
Martok hat folgendes geschrieben: | | ich hab mich so gefreut, dich mal korrigieren zu dürfen, und nun das |
Wenn's Dir soviel bedeutet, darfst Du jetzt gerne schreiben, dass ich vergessen habe, something wieder freizugeben @Marco: Hey, das ist jetzt aber fies! 
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
Martok
      
Beiträge: 3661
Erhaltene Danke: 604
Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
|
Verfasst: Do 09.08.07 11:01
Du hast something nicht wieder freigegeben

_________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Do 09.08.07 11:02
Mist, Du hast Recht.  Ich werd's beim nächsten Mal besser machen 
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
Allesquarks
      
Beiträge: 510
Win XP Prof
Delphi 7 E
|
Verfasst: Do 09.08.07 12:48
Nun ja der vollständigkeit halber. Meines Wissens kann man bei abstract auch dynamic verwenden. Kommt aber abgesehen von der internen Behandlung so ziemlich aufs gleiche hinaus.
In der Delphi Hilfe dazu steht glaube ich auch, dass abstract ohne virtual oder dynamic nicht viel Sinn macht. Denn mit abastract will man ja gerade ein Klassenspeziefisches Tochterverhalten erzwingen im Gegensatz zum erben der allgemeinen Parentfunktion. Speziefisches Verhalten geht dann aber nur mit virtual oder dynamic.
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Fr 10.08.07 12:32
@Christian: Der Hinweis, dass Du hättest lesen sollen, war schon berechtigt, da gefragt wurde "ABSTRACT, aber nicht VIRTUELL", und nicht nach "VIRTUELL und nicht ABSTRACT"...
Ansonsten hier mal noch ein Hinweis an die ganzen anderen, die wieder mal die DOH nicht gelesen haben und auch sonst ihr Halbwissen zum besten geben:
| Delphi Online-Hilfe: | Eine abstrakte Methode ist eine virtuelle oder dynamische Methode, die nicht in der Klasse implementiert wird, in der sie deklariert ist. Die Implementierung wird erst später in einer abgeleiteten Klasse durchgeführt. Bei der Deklaration abstrakter Methoden muss wie im folgenden Beispiel die Anweisung abstract nach virtual oder dynamic angegeben werden:
Delphi-Quelltext 1:
| procedure DoSomething; virtual; abstract; |
Eine abstrakte Methode kann nur in einer Klasse (bzw. Instanz einer Klasse) aufgerufen werden, in der sie überschrieben wurde. |
Womit gezeigt wäre: JA, es gibt abstracte Methoden, die nicht virtual sind, nämlich genau dann, wenn sie dynamic sind
MfG,
BenBE.
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Fr 10.08.07 13:00
BenBE hat folgendes geschrieben: | | @Christian: Der Hinweis, dass Du hättest lesen sollen, war schon berechtigt, |
Der Titel war vorher andersrum und wurde erst nach meinem Posting editiert. Deswegen schrieb ich, dass ich den Titel gelesen hätte.
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|