![]() |
Kann eine Klasse verschiedene Typen handeln?
Hallo,
kann eine Klasse verschiedene Typen verarbeiten? Ich zeig mein Vorhaben mal besser an einen Beispiel:
Delphi-Quellcode:
Am Ende möchte ich einfach nur zum Beispiel value := TValue.Create('Test') sagen können und die entsprechende "Unterklasse" wird automatisch ausgewählt.
TValueInt = class(TObject)
private fValue : Integer; public constructor Create(Value : Integer); end; TValueString = class(TObject) private fValue : string; public constructor Create(Value : string); end; TValue = Class(TValueInt aber auch TValueString geht das?) private public constructor Create(Value : Integer); constructor Create(Value : string); override; end; Geht so was? Viele Grüße |
Re: Kann eine Klasse verschiedene Typen handeln?
Ja und Nein
du könntest ne Abstracte Basisklasse machen und dann von beiden Ableiten damit dann deine andere Createn und dann immer mit Typecasts arbeiten |
Re: Kann eine Klasse verschiedene Typen handeln?
Nein. So geht das nicht.
Du müsstest Deine beiden Valueklasse von einer gemeinsamen Basisklasse ableiten (die am besten nicht TObject sind) und dann mittels dem Factory-Pattern die richtige Instanz erzeugen und aus der Factory zurückgeben. Den Vorfahren einer Klasse kannst Du nicht dynamisch oder gar zur Laufzeit ändern. Das muss schon zur Compiletime feststehen und ab da isses fix. |
Re: Kann eine Klasse verschiedene Typen handeln?
Mehrfachvererbung gibt es in Delphi nicht direkt.
Das geht nur bei Interfaces. Such mal hier im Forum nach "Mehrfachvererbung" oder so. Es gibt schöne Beiträge, wo das super erklärt ist. |
Re: Kann eine Klasse verschiedene Typen handeln?
Danke für die Tipps und Hinweise. :thumb:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:47 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 by Thomas Breitkreuz