Главная страница
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.024 c
3-97994
Kurt
2002-09-09 12:51
2002.09.30
Как поле типа счетчик корректно заполнять в визуальных комонент


1-98157
SergeyDon
2002-09-13 15:00
2002.09.30
Сохранение (чтение) компoнентов в поток?


14-98343
Игорь Шевченко
2002-09-05 15:22
2002.09.30
К вопросу о пиратстве


1-98046
qube
2002-09-18 17:22
2002.09.30
MapInfo


3-98015
Ольга
2002-09-09 10:50
2002.09.30
Печать в файл