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