Если у меня есть дочерний класс, дочерний класс наследует все методы от родителя, но как использовать функции из дочернего класса в родительском классе? Это абстракция? Как это сделать?Абстракция в Delphi
Мой код:
type
cParent = class(TObject)
private
function ParentFunction:byte;
function ChildFunction:byte;virtual;abstract;
end;
type
cChild = class(cParent)
private function ChildFunction:byte;override;
end;
function cChild.ChildFunction:byte;
begin
Exit(20);
end;
function cParent.ParentFunction:byte;
begin
Exit(10);
end;
var
c:cParent;
begin
c:= cParent.Create;
WriteLn(c.ChildFunction);
Readln;
end.
Он компилирует файл, но я получаю исключение абстракций.
Когда вы говорите, что он компилируется хорошо, вы действительно имеете в виду, что вы * не * получили предупреждение от компилятора, говорящее вам, что вы создаете абстрактный класс? Вам нужно быть более внимательными к тому, чтобы отпечатывать подсказки и предупреждения компилятора, а не только ошибки. –
Всего несколько комментариев относительно обычного стиля. Обычно в Delphi используется префикс имени класса (и другого типа) с помощью T, а не c. Возвращаемое значение функций обычно устанавливается путем установки неявной переменной Result в значение, а не с использованием Exit i.e. Результат: = 10 ;, а не Exit (10) ;. Синтаксис Exit был добавлен только в D2009 Примечание: вы также можете использовать имя функции, а не результат (ParentFunction: = 10;) - эффект тот же, и это оригинальный синтаксис Pascal –