无法覆盖访问权限低于基本方法的方法

时间:2012-08-09 13:07:54

标签: .net override warnings delphi-prism oxygene

我差不多完成了迁移.NET环境的软件。现在我正在处理所有警告并清理它们。然后,我遇到了这个问题。

这是我的班级:

 TColorObj = class
   value:double;
   thecolor:Color;
   Constructor;
   method ReadColor(bdr:BinaryReader);
   method WriteColor(bdw:BinaryWriter);
   method Clone:TColorObj;
   method ToString:String; Override;  <<<<----this method is raising error.
 end;

错误是“无法覆盖访问权限低于基本方法的方法。”但是,如果我删除关键字覆盖,则会引发警告消息,“ToString”会隐藏父方法。“TColorObj类不会从任何基类继承,如您所见。

那么,我是否将TColorObj类公开?

任何帮助或提示都将不胜感激。

2 个答案:

答案 0 :(得分:4)

您需要将ToString方法设置为公开可见性,这就是TObject中的方法。你无法将它从“公共”移动到后代的较低能见度。

TColorObj = class
   value:double;
   thecolor:Color;
   Constructor;
   method ReadColor(bdr:BinaryReader);
   method WriteColor(bdw:BinaryWriter);
public
   method Clone:TColorObj;
   method ToString:String; Override;  <<<<----this method is raising error.
end;

答案 1 :(得分:1)

如果您没有指定从Object类继承的类,则每个类都继承自另一个类。

您正在重审公共的ToString方法,因此您必须公开覆盖方法。