Pascal - Class 两个不同文件之间的继承?

Pascal - Class inheritance between two different files?

假设我有两个文件,characters.pasogre.pas。食人魔是一个角色,但为了清洁起见,我试图将这两个文件分开。在 characters.pas 我有

unit Characters;

{$mode objfpc}{$H+}

interface
type
  TCharacter = class(TOBject)
    private
      // ...
    public
      // ...
    published
      // ...
  end;

implementation
  // Method bodies
end.

ogre.pas我有

unit Ogre;

{$mode objfpc}{$H+}

interface
type
  TOgre = class(TCharacter)
    public
        constructor create; override;
    end;


implementation

constructor TOgre.create();
begin
  // Banana banana banana
end;
end.

在任一 .pas 文件中的任何位置添加 uses 块都会引发错误,这使我相信所有依赖继承的 类 必须与其父文件位于同一文件中.我错过了什么吗?

是的,您错过了一些东西:use 部分。您必须声明 unit Ogre 使用 unit Characters:

单位食人魔;

{$mode objfpc}{$H+}

interface

uses
  Characters;

type
  TOgre = class(TCharacter)
    public
        constructor create; override;
    end;


implementation

constructor TOgre.create();
begin
  // Banana banana banana
end;
end. 

阅读更多:

另请注意,如果您希望某些字段从 TCharacterTOgre 可见,但仍无法从主程序访问,则必须将它们的可见性设置为 protected