Zu c) :
Man benötigt nichtmal die virtuellen/abstrakten Methoden,
denn spätestens in der Implementation kann man ja die richtigen Units einbinden
und auch frühestens da würde man auch die Methoden benötigen und könnte dann da via Typecast
TClass2(BaseClass2) {oder} (BaseClass2 as TClass2)
an die richtigen Methoden rankommen.
Delphi-Quellcode:
Unit Common;
interface
type
TBaseClass1 =
class
end;
TBaseClass2 =
class
end;
implementation
end.
Unit Unit1;
interface
uses Common;
type
TClass1 =
class (TBaseClass1)
private
FClass2: TBaseClass2;
public
procedure Foo1;
end;
implementation
uses Unit2;
end.
////////////////////////////////////////
Unit Unit2;
interface
uses Common;
type
TClass2 =
class (TBaseClass2)
private
FClass1: TBaseClass1;
public
procedure Foo2;
end;
implementation
uses Unit1;
end.
oder (Unit1 nochmal)
Delphi-Quellcode:
Unit Unit1;
interface
uses Common, Unit2;
type
TClass1 =
class (TBaseClass1)
private
FClass2: TBaseClass2;
// oder direkt TClass2
public
procedure Foo1;
end;
implementation
end.