Показать сообщение отдельно
  #1  
Старый 07.12.2011, 10:29
gerych gerych вне форума
Прохожий
 
Регистрация: 06.12.2011
Сообщения: 7
Репутация: 10
Вопрос Помогите с полиформизмом

Здрасте! ЗНАЮЩИЕ, помогите пожалуйста начинающему. Не могу разобраться с наследованием классов. Допустим есть три класса:

Код:
unit UnitBase;
interface
type
BaseClass3=class
end;
BaseClass2=class
end;
BaseClass1=class
end;
implementation
end.
 


Код:
unit Unit3;
interface
uses
UnitBase;
type
Class3 = class (BAseClass3)
 Owner:BaseClass1;
 S:String;
 constructor Create(aOwner:BaseClass1);
end;
implementation
constructor Class3.Create(aOwner: BaseClass1);
begin
Owner:=aOwner;
S:='Class3';
end;
end.

Код:
unit Unit2;
interface
uses
UnitBase;
type
Class2 = class (BAseClass2)
 Owner:BaseClass1;
 S:String;
 constructor Create(aOwner:BaseClass1);
end;
implementation
constructor Class2.Create(aOwner: BaseClass1);
begin
Owner:=aOwner;
S:='Class2';
end;
end.


Код:
unit Unit1;
interface
uses
UnitBAse,Unit2,Unit3;
type
Class1=Class(BaseClass1)
 Value2:Class2;
 Value3:Class3;
 S:String;
 constructor Create;
end;
implementation
constructor Class1.Create;
begin
 Value2:=Class2.Create(Self);
 Value3:=Class3.Create(Self);
 S:='Class1';
end;
end.


Проблема такая, как реализовать следующий код в модуле Unit2:
Код:
implementation
...
var
C:Class2;
S:String;
begin
S:=C.Owner.Value3.S;

пробовал объявлять BaseClass2 и BaseClass3 абстрактными но так и не получается
А если в двух словах , то : как потомку получить полный доступ к методам и переменным предка если они описаны в разных модулях программы и предок ссылается на модуль потомка?????
Ответить с цитированием