Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
1-98189
Новенький в Делфи
2002-09-18 00:07
2002.09.30
Обработчик событий в другом модуле. Как сделать?


8-98238
Сявчик
2002-05-30 21:01
2002.09.30
Формы


4-98418
Vaddya
2002-08-10 13:02
2002.09.30
Добавление флага стиля и обновление окна


1-98194
Dimich1978
2002-09-18 11:57
2002.09.30
StringGrid


7-98360
ASM
2002-07-18 03:44
2002.09.30
Ребята, может и глупый вопрос но...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский