Форум: "Начинающим";
Текущий архив: 2007.12.23;
Скачать: [xml.tar.bz2];
ВнизООП Найти похожие ветки
← →
IvanB (2007-11-30 11:06) [0]Подскажите пожалуйста.
У меня есть начальный класс:TSomeClass = class(TComponent)
private
FStr1: string;
FInt1: Integer;
FWord1: Word;
FStr2: string;
procedure ...
function ...
function func1(Int: Integer): string;
...
end;
function TSomeClass.func1(Int: Integer): string;
begin
if FStr1 = ... then
case FInt1 of ...
TSomeClass.proc1();
TSomeClass.proc2();
...
Result := ...
end;
и наследникTOtherClass = class(TSomeClass)
private
function func1(Int: Integer): string;
end;
как мне в таком случае перекрыть func1 из начального класса?
← →
IvanB (2007-11-30 11:08) [1]Забыл. Но при этом в наследнике вызвать функции из начального класса:
function TOtherClass.func1(Int: Integer): string;
begin
ShowMessage("dddd");
TSomeClass.proc1();
TSomeClass.proc2();
....
end;
← →
Сергей М. © (2007-11-30 11:16) [2]объявить метод TSomeClass.func1 виртуальным (
virtual
), а в классе TOtherClass перекрыть метод func1 (override
)
В теле перекрытого метода обращение к соотв. методу класса-предка осуществляется при пом. зарезерв.словаinherited
← →
Ш-К (2007-11-30 11:16) [3]Сделать виртуальной?
← →
IvanB (2007-11-30 11:17) [4]Я птыался сделать такое:
TSomeClass: function func1(Int: Integer): string; virtual;
TOtherClass: function func1(Int: Integer): string; override;
Но ругается на Method "..." not found in base class
F1 не помогло. Ошибки в написании точно нет.
← →
ЮЮ © (2007-11-30 11:19) [5]TSomeClass = class(TComponent)
private
...
function func1(Int: Integer): string; virtual;
...
end;
TOtherClass = class(TSomeClass)
private
function func1(Int: Integer): string; override;
end;
function TOtherClass.func1(Int: Integer): string;
begin
Result := inherited func1(Int);
proc1();
// а если proc1() тоже перекрыт и нужен proc1() именно предка, то
inherited proc1();
....
end;
← →
trubin © (2007-11-30 11:20) [6]TSomeClass и TOtherClass в одном юните?
← →
IvanB (2007-11-30 11:23) [7]Нет, в разных. Наверное стоит убрать из private в начальном классе?
← →
ЮЮ © (2007-11-30 11:25) [8]> Нет, в разных. Наверное стоит убрать из private в начальном
> классе?
стоит поместить хотя бы в protected.
← →
Сергей М. © (2007-11-30 11:26) [9]
> Наверное стоит убрать из private в начальном классе?
>
Если в разных, то конечно следует перенести как минимум в protected
← →
Amoeba © (2007-11-30 11:26) [10]
> ООП [D7, 2003]
>
> IvanB (30.11.07 11:06)
>
> Подскажите пожалуйста.
>
Читай учебники! Иначе далеко не уедешь.
Найдешь здесь в электронном виде
http://www.podgoretsky.com/ddp.html
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.12.23;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.043 c