Forum: Object-Pascal / Delphi-Language
Delphi
by Uwe Raabe,
8. Jun 2014
Wobei das ja durch Supports nicht vorgeschrieben ist. Supports sagt ja nur, ob dieses Interface unterstützt wird und liefert gegebenenfalls einen Zeiger darauf zurück. Nirgendwo steht, daß dieses Interface von derselben Klasse implementiert sein muss wie das Ausgangs-Interface. Immerhin ist Supports die einzige Möglichkeit, sinnvoll mit einer polymorphen IInterfaceList zu arbeiten. Hinter jedem...
Forum: Object-Pascal / Delphi-Language
Delphi
by Uwe Raabe,
20. Nov 2013
OK, vielleicht unklar ausgedrückt: supported = liefert bei Supports true.
Bezieht sich halt auf meinen Beispielcode im Beitrag #5 weiter oben. TClass2 deklariert nur IChild bei den unterstützen Interfaces und deshalb kann man IFather nicht über Supports abrufen. Will man das, muss man es so deklarieren wie bei TClass1.
Forum: Object-Pascal / Delphi-Language
Delphi
by Uwe Raabe,
19. Nov 2013
Wenn du willst, daß TChild sowohl IChild als auch IParent supported, dann musst du beide Interfaces angeben. Andernfalls kannst du nur an das IChild Interface heran. Da du aber weißt (aus der Deklaration), daß IChild von IParent abgeleitet ist, kannst du natürlich auch die IParent-Methoden verwenden. Es kommt also wie immer darauf an, was man erreichen will: man muss halt wissen, was man tut.
...
Forum: Object-Pascal / Delphi-Language
Delphi
by Uwe Raabe,
6. Aug 2010
Das sehe ich etwas anders! Lass das mal laufen:
type
IFather = interface
end;
IChild = interface (IFather)
end;
Forum: Object-Pascal / Delphi-Language
Delphi
by Uwe Raabe,
6. Aug 2010
Um es mal auf dein Beispiel zu beziehen:
IReadObject = Interface(IInterface)
function getMass: Double;
property Mass: Double read getMass;
End;
IWriteObject = Interface(IInterface)
Forum: Object-Pascal / Delphi-Language
Delphi
by Uwe Raabe,
6. Aug 2010
Interfaces können genau wie Klassen immer nur einen Vorfahren haben. Klassen können aber mehrere Interfaces implementieren.