我有两个类,一个派生自另一个。这些类都引入了具有相同名称的变量。派生类中的变量隐藏了超类中的变量。
如何从派生类的方法中引用超类的变量?
type
TClass1 = class
protected
FMyVar: Integer;
end;
TClass2 = class(TClass1)
protected
FMyVar: Integer;
public
procedure Foo;
end;
procedure TClass2.Foo;
begin
//here I want access to FMyVar from TClass1
end;
答案 0 :(得分:5)
没什么特别的。除了在父级中标记为private
的成员外,每个子类都可以自动访问其父类中的内容。
与父母在同一单元中声明的子类可以访问标记为private
的成员。使用strict private
代替确实阻止子类访问其继承的成员。
答案 1 :(得分:5)
您可以通过演员获得访问权限:
procedure TClass2.Foo;
begin
DoSomething(TClass1(Self).FMyVar);
end;
作为旁注,我建议你重新考虑你的设计。你走的路会导致混乱和错误。