Klassen mit unterschiedlichen Parents verwursten
Hallo zusammen,
ich habe folgende Struktur bei einer Klassendefinition: Basisklasse : TFooBase davon abgeleitet: TFooClass1 = class(TFooBase), TFooClass2 = class(TFooBase) jetzt möchte ich wiederum ein Set von gemeinsamen Eigenschaften und Funktionen definieren, die in jede der abgeleiteten Klassen (TFooClass1/2) drinne sein soll. In TFooBase haben sie in diesem Level (noch) nichts zu suchen, weil TFooBase als Basis weiterer (anderwertiger) Ableitungen dienen soll. Also so soll es in etwa aussehen: ??? Funktion1 virtual; Funktion2 virtual; ??? TFooClass1 Funktion1 override; Funktion2 override; TFooClass2 Funktion2 override; Ist das in der Form irgendwie machbar ? Danke schonmal. |
AW: Klassen mit unterschiedlichen Parents verwursten
Hallo und Willkommen in der DP :dp:,
ja, das geht. Wenn ich Dich richtig verstanden habe, dann suchst Du das Schlüsselwort abstract.
Delphi-Quellcode:
type
TBaseClass = class protected function Func1; virtual; abstract; //wird hier noch nicht implementiert function Func2; virtual; abstract; //s.o. end; TChild1 = class(TBaseClass) protected function Func1; override; //Implementation erfolgt erst hier function Func2; override; end; |
AW: Klassen mit unterschiedlichen Parents verwursten
Nein, das ist leider nicht das was ich suche.
ich versuch's nochmal etwas zu verdeutlichen: Eigentlich müssten (nur zum Verständnis) Funktion1 virtual; Funktion2 virtual; in TFooBase aufgenommen werden, damit sich TFooClass1 und TFooClass2 beide auf den gleichen Funktionsrumpf beziehen können. Aber da TFooBase eine allgemeine Basisklasse darstellt, kann ich sie hier nicht aufnehmen, sondern erst ab TFooClass1 bzw. TFooClass2. Kann ich ab diesem Level noch gemeinsame Dinge aufnehmen, die von den abgeleiteten als Basis angesehen werden. |
AW: Klassen mit unterschiedlichen Parents verwursten
Nur dass ich das richtig verstehe: die Basisklasse hat thematisch nichts mit den beiden Funktionen zu tun, die kommen erst in der ersten Ableitung ins Spiel (also TFooClass1 bzw. TFooClass2), stimmt das soweit?
|
AW: Klassen mit unterschiedlichen Parents verwursten
Ja das ist korrekt.
|
AW: Klassen mit unterschiedlichen Parents verwursten
In dem Fall würde ich einfach noch eine Klasse "dazwischenschieben", TFoo1 und TFoo2 erben dann von der und nicht mehr direkt von der Basisklasse.
|
AW: Klassen mit unterschiedlichen Parents verwursten
Hi,
und wenn das nicht möglich ist (Klasse dazwischen) das Klassenmodell noch einmal überarbeiten oder alternativ mit Interfaces arbeiten (etwas komplexer wie reine OOP) Grüße |
AW: Klassen mit unterschiedlichen Parents verwursten
Die Sache ist die, dass in TFooClass1 und TFooClass2 jeweils unterschiedliche Objekte definiert sind und angesprochen werden (müssen).
Allerdings habe ich im weiteren Verlauf einen zentralen "Ansprechpartner" (TFooContainer), der dann entweder mit TFooClass1 oder TFooClass2 arbeiten soll. Damit nicht jedesmal fuer einen Funktionsaufruf unterschieden werden muss, ob die Klasse jetzt TFooClass1 oder TFooClass2 ist (weil sie ja eigentlich einen gemeinsamen Funktionsschatz haben), war die Überlegung mit den zusätzlichen Gemeinsamkeiten. Würden die Interfaces so etwas abdecken ? |
AW: Klassen mit unterschiedlichen Parents verwursten
Sowohl Interfaces als auch die "Zwischenklasse" würden das abdecken.
|
AW: Klassen mit unterschiedlichen Parents verwursten
Zitat:
Stichwort: Mehrfachvererbung Und sowas ginge nicht. [edit] Oder hab ich's richtig verstanden. :grubel: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz