【问题标题】:Cannot override method with lower access than base method无法覆盖访问权限低于基本方法的方法
【发布时间】:2012-08-09 13:07:54
【问题描述】:

我几乎完成了将我的软件迁移到 .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;

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

那么,我要公开 TColorObj 类吗?

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

【问题讨论】:

  • 该错误似乎表明您应该公开 ToString 方法。

标签: .net overriding warnings delphi-prism oxygene


【解决方案1】:

您需要在可见性中公开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;

【讨论】:

  • 肯·怀特,它是固定的。谢谢。
【解决方案2】:

如果你不指定你从Object类继承的类,每个类都继承自另一个类。

您正在覆盖公开的ToString 方法,因此您还必须将覆盖方法设为公开。

【讨论】:

    猜你喜欢
    • 2011-12-23
    • 2019-02-24
    • 2011-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多