AGB  ·  Datenschutz  ·  Impressum  







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

Interfaces und Vererbung?

Ein Thema von Whookie · begonnen am 21. Okt 2009 · letzter Beitrag vom 25. Mär 2011
Antwort Antwort
Seite 2 von 2     12   
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#11

AW: Interfaces und Vererbung?

  Alt 25. Mär 2011, 16:44
Natürlich, aber das erklärt nicht, warum es funktioniert.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#12

AW: Interfaces und Vererbung?

  Alt 25. Mär 2011, 19:16
In den Interfaces wird eine Linkliste zu den Methoden angelegt.
Jedes Interface hat seine eigene Liste.
Bei dir steht nun im Interface IIntfA an der Stelle [0] ein Verweis zu ProcA des internen Objektes
und in IIntfB steht an der Stelle [0] ein Verweis zu ProcB des internen Objektes.
Die Listen stehen in den Interfaces, also ist es dem Objekt vollkommen egal, bzw. es bekommt nicht mit, ob die verlinkten Interfaces an Stelle [0] Unterschiedliche Methodenzeiger enthalten.

PS: deshalb kann man Interfaces auch nicht einfach so casten, denn dann würden ja die Adressen des falschen Interfaces verwendet.
$2B or not $2B
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#13

AW: Interfaces und Vererbung?

  Alt 25. Mär 2011, 19:25
Ähh ja, hast recht, hatte einen Denkfehler.
Delphi-Quellcode:
var
  IntfA: IIntfA;
  IntfB: IIntfB;
begin
  IntfA := TMyClass.Create;
  IntfB := TMyClass.Create;
Hierbei werden ja zwei komplett andere, inkompatible Interfaces erzeugt, die sich deshalb auch nicht casten lassen.

Trotzdem schade, dass die Mehrfachvererbung bei Interfaces so nicht geht. Ist irgendwie unintuitiv. Ich bin sicher, man hätte das technisch auch anders lösen können... aber nun denn... muss wohl damit leben.

Geändert von Namenloser (25. Mär 2011 um 19:29 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.027 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#14

AW: Interfaces und Vererbung?

  Alt 25. Mär 2011, 21:49
Ich versteh nicht, was alle so an Mehrfachvererbung haben. Vererbung in allen Ehren, aber an sich eine hohe Kopplung. Hohe Kopplung ist oft nichts gutes. Und eine Mehrfachvererbung macht das noch viel schlimmer. Und schmunzeln muss ich dann noch, wenn ich die zahlreichen Beispiele für diese sehe.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight

Geändert von Stevie (25. Mär 2011 um 21:53 Uhr)
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#15

AW: Interfaces und Vererbung?

  Alt 25. Mär 2011, 21:52
Bei Klassen gebe ich dir recht, bei Interfaces ist es imo etwas anderes.
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.027 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#16

AW: Interfaces und Vererbung?

  Alt 25. Mär 2011, 21:53
Bei Klassen gebe ich dir recht, bei Interfaces ist es imo etwas anderes.
Klar, bei Interfaces könnte man sich noch vorstellen, dass man 2 verschiedene Interfaces hat, die auch in Kombination vorkommen und man dann natürlich dieses als 1 Interface haben möchte. Läuft aber in meinen Augen dem Single responsibility principle zuwider.

Und selbst wenn, worin läge der Vorteil eines IWalkAndFly Interfaces, was von IWalk und IFly ableitet, wenn ich in meiner Klasse sowohl IWalk als auch IFly implementieren kann und auch sogar die Möglichkeit habe eine IWalk Referenz zu fragen, ob sie auch nen IFly supportet?
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight

Geändert von Stevie (25. Mär 2011 um 21:59 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 15:41 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