Невозможно переопределить метод с более низким доступом, чем базовый метод

Я почти закончил миграцию своего программного обеспечения для среды.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 публичным?

Любая помощь или советы будут оценены.

2 ответа

Решение

Вам нужно сделать ToString метод public в видимости, то есть то, что он есть в 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;

Каждый класс наследуется от другого класса, если вы не укажете класс, который наследуете от Object учебный класс.

Вы перебираете ToString метод, который является общедоступным, поэтому вы должны также сделать метод переопределения публичным.

Другие вопросы по тегам