Czy da się w Delphi dziedziczyć po kilku klasach, tak jak np. w C++ ?
Tak żeby klasa A dziedziczyła po B i C, a nie B dziedziczy po C i A po B...
Dzięki i pzdr
Czy da się w Delphi dziedziczyć po kilku klasach, tak jak np. w C++ ?
Tak żeby klasa A dziedziczyła po B i C, a nie B dziedziczy po C i A po B...
Dzięki i pzdr
nie wiem czy o to chodzi bo sie za bardzo na tym nie znam ale raz znalazłem takie coś:
TComponent = class(TPersistent, IInterface, IInterfaceComponentReference)
Czyli że TComponent dziedziczy z tych 3 innych.. ale pewien nie jestem :d
NIe ma takiej możliwości.
Czyli że TComponent dziedziczy z tych 3 innych.. ale pewien nie jestem :d
Nie, dziedziczy tylko z tej 1. klasy, a implementuje 2 interfejsy. Jest możliwość "dziedziczenia" z kilku klas, tylko trzeba inaczej zorganizować dziedziczenie.
Brodny czy mógłbyś coś więcej napisać.
Może coś analogicznego do mojego przykładu.
W Delphi nie ma wielodziedziczenia. Wielodziedziczenie jest zastępowane (oczywiscie nie zawsze sie da) przez implementowanie interfejsow (jak w Javie).
TA = class (TB, IC, ID)
Klasa TA dziedziczy z klasy TB i implementuje interfejsy IC i ID. Jak wiadomo w interfejsach można zawrzeć prototypy metod oraz stałe. Pol i metod niestety nie można. Jeżeli potrzebujesz pol lub metod z kilku klas, to musisz wykorzystac kompozycje. Np.
TA = class
private
B: TB;
C: TC;
...
Potem gdziesz w konsruktorze tworzysz obiekty B i C i ew. odwolujesz sie do nich.
W Delphi nie ma wielodziedziczenia. Wielodziedziczenie jest zastępowane (oczywiscie nie zawsze sie da) przez implementowanie interfejsow (jak w Javie).
TA = class (TB, IC, ID)
[...]
W Delphi 6 dla profesjonalistow (Paul Kimmel, wydawnictwo RM, 2001) znalazlem taki fragment kodu dotyczacy symulacji dziedziczenia wielokrotnego:
TKlasaA = class
procedure ProcA;
end;
TKlasaB = class
Procedure ProcB;
end;
TKlasaC = class(A)
private
KlasaB: TKlasaB;
public
procedure ProcB;
end;
implementation
Procedure KlasaC.ProcB;
begin
KlasaB.ProcB;
end;