delphi - 嵌套类可以继承吗?

标签 delphi oop class

嗯,我有一个父类,其中在“ protected ”选项卡中声明了一个带有 protected 类变量的嵌套类。在另一个单元中,我有一个子类,它继承自父类。当我尝试访问 protected 内容时/public 来自父类 - 它可以工作,但是当我尝试访问受嵌套类保护的内容时,它不起作用。

type
  TParent = class(TObject)

  protected
    class var x:integer;
    type
      TNested = class(TObject)

        protected
          class var y:integer;
    end;
end;

我在子类中的代码:

x := 10; //works
y := 10; //undeclarated idenitifier 'y'.
TNested.y := 10; //undeclarated idenitifier 'y'

子类的声明是:

type
  TChild = class(TParent);

我如何访问 y?

最佳答案

y:integer 是 TNested 类的 protected 字段,即。只能由 TNested 及其自己的继承类使用。
您可能可以使用 TParent 中的 TNested,但这是因为在 Delphi 中,如果从同一单元调用,您可能拥有比应有的更大的访问权限。因此 TParent 和 TNested 位于同一单元,因此您可以从 TParent 调用 TNested protected 数据。但由于 TChild 与 TNested 位于不同的单位,因此这是不可能的。

关于delphi - 嵌套类可以继承吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1158143/

相关文章:

delphi - 双组合框选择依赖性

delphi - 如何检查表单是否最大化?

c++ - 使函数返回具有不同属性的东西

php - PHP 子类可以更改重写方法的参数吗?

c# - ASP.NET Core - 如何在另一个 Controller 中重用在一个 Controller 中创建的方法?

python - __iter__ 方法的主体有什么意义?

delphi - Delphi中框架之间的通信

delphi THashSHA2 在大文件上返回错误的 SHA256

java - 编排多个 google API 客户端的最佳方法是什么?

php - 在 PHP 中调用对象方法中的析构函数