Pascal - Class 两个不同文件之间的继承?
Pascal - Class inheritance between two different files?
假设我有两个文件,characters.pas
和 ogre.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.
阅读更多:
另请注意,如果您希望某些字段从 TCharacter
到 TOgre
可见,但仍无法从主程序访问,则必须将它们的可见性设置为 protected
假设我有两个文件,characters.pas
和 ogre.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.
阅读更多:
另请注意,如果您希望某些字段从 TCharacter
到 TOgre
可见,但仍无法从主程序访问,则必须将它们的可见性设置为 protected