Dziedziczenie po kilku klasach ?

0

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

0

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

0

NIe ma takiej możliwości.

0

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.

0

Brodny czy mógłbyś coś więcej napisać.
Może coś analogicznego do mojego przykładu.

0

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.

0

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;

1 użytkowników online, w tym zalogowanych: 0, gości: 1