![]() |
Konstruktor Create Virtual oder nicht?
Ich steh hier momentan so'n bisschen auf dem Schlauch und wollte deshalb mal meine Frage in die Runde werfen.
Ist es notwendig bzw. besser, einen Konstruktor als virtual zu deklarieren, um diesen in abgeleiteten Klassen überschreiben zu können?
Delphi-Quellcode:
Verwende ich in den Creates des inherited, dann funtioniert das genauso, wie diese Variante:
classA = class(TPersistent)
constructor Create; end; classB = class(ClassA) constructor Create; end;
Delphi-Quellcode:
Was ist richtiger?
classA = class(TPersistent)
constructor Create; Virtual; end; classB = class(ClassA) constructor Create; Override; end; Danke René |
Re: Konstruktor Create Virtual oder nicht?
Zitat:
|
Re: Konstruktor Create Virtual oder nicht?
Aber es geht doch auch ohne, wenn ich inherited verwende. Warum - was ist der Unterschied?
|
Re: Konstruktor Create Virtual oder nicht?
Meiner Meinung nach brauchst du virtual bei Konstruktoren und Klassenmethoden nur, wenn du mit Klassenreferenztypen (Metaklassen) arbeitest, oder den Konstruktor an einer Instanz aufrufst (Instanz.create;), was ich bisher noch nie gemacht habe.
|
Re: Konstruktor Create Virtual oder nicht?
Hier ist das recht gut erklärt (zumindest besser, als ich das könnte):
![]() |
Re: Konstruktor Create Virtual oder nicht?
Ja, aber hier reden wir über Konstruktoren, und da ist ein virtual vollkommen sinnlos, wenn man keine Metaklassen verwendet (oder sie an einer Instanz aufruft, s. o.).
|
Re: Konstruktor Create Virtual oder nicht?
Ich muss mal nachfragen: Was meinst du mit MetaKlasse?
|
Re: Konstruktor Create Virtual oder nicht?
Schau mal in die Delphi-Hilfe. Code sagt mehr als tausend Worte:
Delphi-Quellcode:
Nur für solche Situationen brauchst du virtuelle Klassenmethoden, denn sonst rufst du sie ja direkt an der Klasse auf, sodass keine späte Bindung nötig ist.
type TMetaclass=class of TMyClass; //Deklaration des Metaklassentyps
var metaklasse: TMetaclass; begin metaklasse:=TMyclass; metaklasse:=TMyDerivedClass; metaklasse:=TObject; //geht nicht, da nicht von TMyClass abgeleitet metaklasse.statischeMethode; end. |
Re: Konstruktor Create Virtual oder nicht?
Nach dem genauen Lesen des ersten Beitrages von Appolonius bin ich jetzt wieder runter vom Schlauch. Danke.
|
Re: Konstruktor Create Virtual oder nicht?
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:44 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz