Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.09.30;
Скачать: CL | DM;

Вниз

Что такое абстрактный класс ?   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.016 c
7-98363
Ученик
2002-07-18 12:46
2002.09.30
Запуск приложения из сервиса


1-98069
3asys
2002-09-19 13:03
2002.09.30
Организация последовательности операций


3-97983
Урри
2002-09-02 12:51
2002.09.30
Редактироватние Calcalated поля


14-98332
AL2002
2002-09-05 11:32
2002.09.30
Уже несколько ночей снится одна и та же девушка


14-98328
NewI
2002-09-05 17:24
2002.09.30
Не удаётся установить MSDN в самом конце инсталляции