AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Vererbung bei Implementierung eines Interfaces

Ein Thema von bernhard_LA · begonnen am 14. Jul 2018 · letzter Beitrag vom 15. Jul 2018
Antwort Antwort
Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#1

AW: Vererbung bei Implementierung eines Interfaces

  Alt 15. Jul 2018, 13:28
Eine andere Methode wäre ein gemeinsames Basis-Interface. Und in den abgeleiteten Klassen jeweils ein weiteres Interface mit den speziellen Methoden für diese Klasse. Dann kann mit Supports() geprüft werden um welches Interface es sich handelt.
  Mit Zitat antworten Zitat
Schokohase
(Gast)

n/a Beiträge
 
#2

AW: Vererbung bei Implementierung eines Interfaces

  Alt 15. Jul 2018, 13:44
Als weitere Möglichkeit
Delphi-Quellcode:
IMyInterface = interface
  ['{934A8DAD-87C1-4780-8865-A9BD9CF5DFC8}']
  procedure MySharedProcedure;
  procedure MyFirstProcedure;
end;

TShared = class
public
  procedure MySharedProcedure;
end;

TMyFirstImpl = class(TInterfacedObject, IMyInterface)
private
  FShared: TShared;
protected
  property Shared: TShared read FShared implements IMyInterface;
  procedure MyFirstProcedure;
public
  constructor Create;
  destructor Destroy; override;
end;

{ TShared }

procedure TShared.MySharedProcedure;
begin
  // add some code
end;

{ TMyFirstImpl }

constructor TMyFirstImpl.Create;
begin
  inherited;
  FShared := TShared.Create;
end;

destructor TMyFirstImpl.Destroy;
begin
  FShared.Free;
  inherited;
end;

procedure TMyFirstImpl.MyFirstProcedure;
begin
  // add some code
end;
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.736 Beiträge
 
Delphi 12 Athens
 
#3

AW: Vererbung bei Implementierung eines Interfaces

  Alt 15. Jul 2018, 14:26
Folgendes könnte unter bestimmten Umständen auch gehen und erzwingt nicht die Implementierung in der Basisklasse. Damit lässt es sich auch in bestehende Vererbungshierarchien einbinden. Klappt aber nur, wenn die Methoden weitestgehend autark sind.
Delphi-Quellcode:
// implementiert
TMyClassRoot = class ();
  procedure MySharedProcedure;
end;

IMyLibrary = interface
  procedure MySharedProcedure;
  procedure MyFirstProcedure;
end;


TMyClassA = class ( TInterfacedObject, IMyLibrary);
private
  FMyRoot: TMyClassRoot; // im Create erstellen und Destroy freigeben
protected
  MyRoot: TMyClassRoot read FMyRoot implements IMyLibrary; // was in TMyClassRoot fehlt, liefert diese Klasse nach
  procedure MyFirstProcedure;
end;


TMyClassB = class ( TInterfacedObject, IMyLibrary);
private
  FMyRoot: TMyClassRoot; // im Create erstellen und Destroy freigeben
protected
  MyRoot: TMyClassRoot read FMyRoot implements IMyLibrary; // was in TMyClassRoot fehlt, liefert diese Klasse nach
  procedure MyFirstProcedure;
end;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:07 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