Форум: "Основная";
Текущий архив: 2002.09.30;
Скачать: [xml.tar.bz2];
ВнизЧто такое абстрактный класс ? Найти похожие ветки
← →
DrAlban (2002-09-18 20:49) [0]Или абстрактный метод ? Точно уж не помню, кто-то говорил - забыл. В общем, после его объявления идет слово abstract
← →
ATR (2002-09-18 21:05) [1]Методы которые определены в классе, но не содержат никаких действий и обязательно должны быть переопределены в потомках класса. Пример:
TMyClass = class(TComponent)
protected
procedure MyProc; virtual; abstract;
end;
TMyNewClass = class(TMyClass)
protected
procedure MyProc; override;
end;
.....
{ TMyNewClass }
procedure MyProc;
begin
....
end;
← →
Kibitzer (2002-09-18 21:13) [2]Абстрактный метод - это метод который объявлен в классе, но не реализован (в разделе
implementation
). Абстрактный метод должен быть обязательно либоvirtual
, либоdynamic
(чтобы потомки могли его реализовать).
А абстрактный класс - это класс у которого есть абстрактные методы. По идее от абстрактного класса объектов не создают, а служит он, как скелет для создания многочисленных потомков.
← →
DrAlban (2002-09-18 21:16) [3]То есть экземпляр абстрактного класа создать нельзя ?
← →
Song (2002-09-18 21:20) [4]Нет.
← →
ATR (2002-09-18 21:20) [5]Можно, но вот только зачем это надо.
← →
Song (2002-09-18 21:26) [6]2ATR (18.09.02 21:20)
Ну попробуйте например выполнить такой код хотя бы: TStrings.Create.. посмотрю я на Ваше "можно"
← →
Kibitzer (2002-09-18 21:28) [7]Да. Самый яркий пример абстрактого класса (по моему :)) - класс
TStrings
, от которого произошли его многочисленные потомки:TStringList
,TMemoStrings
,TListBoxStrings
,TStringGridStrings
,TTabStrings
,...
Блягодаря этому я могу сказать, например:ListBox1.Items := Memo1.Lines
(так как и свойствоItems
уTListBox
, и свойствоLines
уTMemo
объявлены какTStrings
)
← →
Kibitzer (2002-09-18 21:33) [8]От абстрактного класса можно создать объект. Но при вызове любого абстрактного метода, стопудово получите сообщение: Abstract error. Какой же смысл создавать от него объект?
← →
ATR (2002-09-18 21:41) [9]2Song
Запросто. Создать-то можно. А вот использовать конечно не получиться.
← →
Юрий Зотов (2002-09-18 21:44) [10]> Какой же смысл создавать от него объект?
Иногда смысл есть - если точно известно, что неперекрытый абстрактный метод никогда и никем не будет вызван. Используется, например, в экспертах IDE, чтобы не плодить лишний код.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.09.30;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.008 c