如何从派生类访问隐藏成员?

时间:2013-04-17 20:46:45

标签: delphi variables scope superclass

我有两个类,一个派生自另一个。这些类都引入了具有相同名称的变量。派生类中的变量隐藏了超类中的变量。

如何从派生类的方法中引用超类的变量?

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;

2 个答案:

答案 0 :(得分:5)

没什么特别的。除了在父级中标记为private的成员外,每个子类都可以自动访问其父类中的内容。

与父母在同一单元中声明的子类可以访问标记为private的成员。使用strict private代替确实阻止子类访问其继承的成员。

答案 1 :(得分:5)

您可以通过演员获得访问权限:

procedure TClass2.Foo;
begin
  DoSomething(TClass1(Self).FMyVar);
end;

作为旁注,我建议你重新考虑你的设计。你走的路会导致混乱和错误。