Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.011 c
1-98141
Шурик Ш
2002-09-17 16:36
2002.09.30
Выбор значения из списка


1-98133
Vladimiruss
2002-09-19 18:31
2002.09.30
Помогите, начинающему программисту...


1-98176
BigFoot123
2002-09-18 09:30
2002.09.30
Winword & Delphi


1-98082
Осирис
2002-09-19 15:59
2002.09.30
Диалоговое окно


3-97960
Tananda
2002-09-09 11:27
2002.09.30
Как дать возможность пользователю отбирать данные из DBGrid а




   Наверх