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

Art*_*tik 1 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;
Run Code Online (Sandbox Code Playgroud)

Rob*_*edy 5

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

在与其父级相同的单元中声明的子类可以访问标记的成员private.strict private而是使用它来真正防止子类访问其继承的成员.


Dav*_*nan 5

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

procedure TClass2.Foo;
begin
  DoSomething(TClass1(Self).FMyVar);
end;
Run Code Online (Sandbox Code Playgroud)

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