1

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

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

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;
4

2 回答 2

5

没有什么特别的。每个子类都会自动访问其父类中的内容,但在父类中标记的成员除外private

在与其父级相同的单元中声明的子类可以访问标记为 的成员privatestrict private相反,使用它可以真正防止子类访问其继承的成员。

于 2013-04-17T20:49:05.057 回答
5

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

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

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

于 2013-04-17T21:20:57.683 回答