Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2006.07.02;
Скачать: [xml.tar.bz2];

Вниз

Чем отличается интерфейс от абстратного класса?   Найти похожие ветки 

 
WondeRu ©   (2006-06-05 15:17) [0]

чем больше отличий, тем лучше!


 
kozhanov ©   (2006-06-05 15:18) [1]

GUID"ом :)


 
wicked ©   (2006-06-05 15:19) [2]

названием....


 
wicked ©   (2006-06-05 15:20) [3]

плюс, не во всех языках есть понятие абстрактного класса.... равно как и понятие интерфейса....
так что отличие более концептуальное.... о... :)


 
Kolan ©   (2006-06-05 15:23) [4]

Интерфейс - контроакт, который должен выполнить класс реализующий его.
абстратный класс - класс методы которого не реализованы.

Я так понимаю..
Кста. до D2006 в Delphi небыло абстрактых классов.


 
wicked ©   (2006-06-05 15:27) [5]


> Кста. до D2006 в Delphi небыло абстрактых классов.

были.... класс был абстрактным, если имел хотя бы один метод с пометкой "abstract"....


 
tesseract ©   (2006-06-05 15:29) [6]


> Кста. до D2006 в Delphi небыло абстрактых классов.


Надо же а меня так доставало в D6 "Abstract Error"........ своего класса.


 
Kolan ©   (2006-06-05 15:30) [7]

Нет это абстрактные методы.

А вот такое в D7 не компилится...
TDeviceManager = class abstract

end;


 
Ega23 ©   (2006-06-05 15:32) [8]


> были.... класс был абстрактным, если имел хотя бы один метод
> с пометкой "abstract"....


Явно не было. Ты мог создать экземпляр такого класса.


 
McSimm ©   (2006-06-05 15:36) [9]

конструкторы абстрактными сделать :)


 
Игорь Шевченко ©   (2006-06-05 15:38) [10]


> Чем отличается интерфейс от абстратного класса?


Тем, что его нельзя создать ?


 
Lamer@fools.ua ©   (2006-06-05 16:03) [11]

>Тем, что его нельзя создать ?

Это уже особенности реализации. Например, в .NET"е создать экземпляр абстрактного класса нельзя.

По сабджу: абстрактный класс в отличие от интерфейса может содержать некую реализованную функциональность.


 
jack128 ©   (2006-06-05 16:07) [12]

Ega23 ©   (05.06.06 15:32) [8]
Ты мог создать экземпляр такого класса.

в win32 и сейчас можно создать абстракный класс...


 
For kaif   (2006-06-05 16:11) [13]

Класс может имплементировать несколько независимых интерфейсов, но не являться наследниками нескольких независимых абстрактных классов.


 
Джо ©   (2006-06-05 16:20) [14]

> [13] For kaif   (05.06.06 16:11)
> Класс может имплементировать несколько независимых интерфейсов,
> но не являться наследниками нескольких независимых абстрактных
> классов.

В C++ есть множественное наследование от классов.


 
wicked ©   (2006-06-05 16:23) [15]


> В C++ есть множественное наследование от классов.

... и нет интерфейсов....

поэтому после постинга
> Lamer@fools.ua ©   (05.06.06 16:03) [11]
дискуссия стает флеймообразной..... ;)


 
Kolan ©   (2006-06-05 16:32) [16]


> wicked ©   (05.06.06 16:23) [15]

Вообщем надо ждать Юрия Зотова :)


 
oldman ©   (2006-06-05 16:38) [17]


>  Чем отличается интерфейс от абстратного класса?
>
> чем больше отличий, тем лучше!


В ОРЕШНИК!!!!!!!!!!!!


 
tesseract ©   (2006-06-05 16:41) [18]


> В C++ есть множественное наследование от классов.

До сих пор не въеду зачем это нужно.


 
Игорь Шевченко ©   (2006-06-05 17:04) [19]


> До сих пор не въеду зачем это нужно.


Удобно


 
oldman ©   (2006-06-05 17:10) [20]


> Игорь Шевченко ©   (05.06.06 17:04) [19]
>
> > До сих пор не въеду зачем это нужно.
>
>
> Удобно


"Дэвушка, а это Вам кто нибудь-сказал, или вы сами так решили?" (Кин-Дза-Дза ©)
:)))


 
Игорь Шевченко ©   (2006-06-05 17:13) [21]

oldman ©   (05.06.06 17:10) [20]

Тебе не с кем пообщаться ?


 
oldman ©   (2006-06-05 17:18) [22]


> Игорь Шевченко ©   (05.06.06 17:13) [21]


Мне, например, удобны совсем другие вещи...
Ну и что?


 
wicked ©   (2006-06-05 17:23) [23]


> Мне, например, удобны совсем другие вещи...
> Ну и что?

а то.... возможность есть, а использовать её или нет - дело программиста... множественное наследование удобно, если применено с большим умом и в ограниченном количестве, особенно в качестве "the last resort".... а в некоторых технологиях просто необходимо, например, при программировании COM...
к слову сказать, ни разу его не использовал....
извините, что встреваю....


 
oldman ©   (2006-06-05 17:28) [24]


> wicked ©   (05.06.06 17:23) [23]


По сабжу - невозможно понять, что он имел ввиду...
"Интерфейс" и "класс" вообще-то разные понятия (с точки зрения меня)...


 
tesseract ©   (2006-06-05 17:42) [25]


> "Интерфейс" и "класс" вообще-то разные понятия (с точки
> зрения меня)...

интерфейс в преводе с английского "междумордие", Соглашение с помощью которого возможно согласованное взаимодействие между чем-либо.

У каждого класса есть интерфейсная часть.


 
kaif ©   (2006-06-05 18:38) [26]

Разница такая же, как между грибом несъедобным и грибом ядовитым.


 
Бурундук ©   (2006-06-05 19:38) [27]

1) управляемое время жизни (для .NET непринципиально, там всё такое)
2) нет множественного наследования интерфейсов (как в .NET - не знаю)
 (т.е. IZ = interface(IX, IY){...}; )
3) GUID + IUnknown
4) полное отсутствие данных, невиртуальных методов
и реализации виртуальных методов
(в С++, напр, даже чисто виртуальная ф-я может иметь реализацию)
5) автоматическое приведение к базовому интерфейсу не
поддерживается
(по GUID"ам двух интерфейсов нельзя сделать вывод, находятся ли они
в родстве или нет.)
Объект должен самостоятельно поддерживать как интерфейс-предок,
так и интерфейс-потомок. {Для .NET, скорее всего, это не так. Не знаю}

Больше ничего в голову не приходит.


 
Юрий Зотов ©   (2006-06-06 00:09) [28]

1. Класс может содержать поля, интерфейс - нет.

2. В терминологии D1-D7, абстрактный класс - это класс, имеющий хотя бы один абстрактный метод, а остальные его методы могут быть реализованы. Интерфейс же никаких реализаций не содержит в принципе.


 
Sergey Masloff   (2006-06-06 06:27) [29]

Вопрос вообще некооректен. Надо уточнять что:
1) имеется в виду Delphi.
2) какой именно имеется в виду интерфейс

Потому что в C++ например абстрактный класс от интерфейса не отличается вообще ничем (более того это он и есть по определению). А само слово интерфейс имеет очень много значений и, вобщем-то, часто под интерфейсом понимают например интерфейс модуля (одноименную секцию в модуле паскаля или заголовочный файл в це)


 
tesseract ©   (2006-06-06 09:31) [30]


> часто под интерфейсом понимают например интерфейс модуля
> (одноименную секцию в модуле паскаля или заголовочный файл
> в це)



>  Соглашение с помощью которого возможно согласованное взаимодействие
> между чем-либо.


 
Polevi ©   (2006-06-06 09:56) [31]

>Потому что в C++ например абстрактный класс от интерфейса не отличается вообще ничем

???

class SomeClass
{
virtual void SomeMethod();
virtual void SomeAbstractMethod()=0;
};

SomeMethod содержит реализацию, см [28]


 
Polevi ©   (2006-06-06 09:57) [32]

или в с++ класс считается абстрактным только если все его методы=0 ?


 
почитатель С++   (2006-06-06 10:16) [33]

В C++ вообще понятия «интерфейс» нет. Есть понятие «абстрактный класс», это если хотя бы одна его ф-я описана как в [31] virtual void SomeAbstractMethod()=0. Есть соглашение о вызовах, есть смещение в VMT - вот их и можно расценивать как «интерфейс класса».
В Делфях-же (по крайней мере в ранних версиях) ключевое слово interface в том числе компенсировало отсутствие множественного наследования.


 
kaif ©   (2006-06-06 10:19) [34]

В Java интерфейс может иметь поля. Так в Java народ создает глобальные  константы. Довольно смешной способ, на мой взгляд. Хотя почему бы нет?.. Зато всегда знаешь, к какой теме данная константа относится.
А вообще что думает объектно-ориентированный люд о константах?
Константы в ООП-идее могут существовать?
Или все глобальное нужно просто запретить на корню?
Вдруг кому-то константа не нравится какая-нибудь, например, число ПИ.


 
isasa ©   (2006-06-06 10:36) [35]

почитатель С++   (06.06.06 10:16) [33]
а разве в С описание интф-са не имеет атрибут
NOVMT class ...


 
почитатель С++   (2006-06-06 12:35) [36]

>>а разве в С описание интф-са не имеет атрибут
>>NOVMT class ...
Ни в одном описании стандарта никаких атрибутов типа NOVMT class нет. Это не более чем расширение, поддерживаемое одним из производителей. В данном случае NOVMT является не более чем каким-то макросом, который, по мнению разработчиков оболочки, упрощает(?) жизнь программистам. И от того, что это расширение поддерживается этим производителем, оно не становится стандартом.
"И это правильно, товарищи"(с).


 
Sergey Masloff   (2006-06-06 22:10) [37]

Polevi ©   (06.06.06 09:57) [32]
> или в с++ класс считается абстрактным только если все его методы=0 ?
Формально пока хотя бы одна из функций со спецификатором чистоты - все равно абстрактный.

Но абстрактный класс со всеми чисто виртуальными функциями называется чисто конкрет... тьфу то есть чисто абстрактным.
А вот такой чисто абстрактный класс обзывается интерфейсом как у самого Страуструпа ($12.2) так и у Бокса, Роджерсона и примкнувшего к ним Брокшмидта


 
DiamondShark ©   (2006-06-07 00:46) [38]


> Константы в ООП-идее могут существовать?

Дело не в ооп-идее, а в том, что создатели некоторых ооп-языков так увлеклись оопом, что забыли про такую штуку, как Модуль.
И вот от того, что в таких языках не оказалось явного понятия Модуля, вылезают всякие утюги, вот, вроде тех же констант, которые некуда запихать, кроме как в уродство вроде
public static readonly int MySupePuperConstant = 123;


 
testerq   (2006-06-07 09:42) [39]

DiamondShark ©   (07.06.06 00:46) [38]

Модуль не поможет. Уж лучше писать MyClassA.MaxSize и MyClassB.MaxSize, чем MyClassA_MaxSize и MyClassB_MaxSize


 
testerq   (2006-06-07 09:44) [40]

А если очень уж хочется, можно в качестве модуля использовать java-класс c вложенными классами, кодом инициализации и пр., причем в таком случае модули могут быть и вложенными, а не ограничиваются только одним уровнем.



Страницы: 1 2 вся ветка

Форум: "Прочее";
Текущий архив: 2006.07.02;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.54 MB
Время: 0.017 c
2-1150208248
VitV
2006-06-13 18:17
2006.07.02
DBgrid нижний скролбар.


2-1150182459
Id
2006-06-13 11:07
2006.07.02
Username


2-1150262150
Марина
2006-06-14 09:15
2006.07.02
Как сделать перескок через единицу в обыкновенном цикле?


2-1149856514
Id
2006-06-09 16:35
2006.07.02
Excel


1-1148213533
Windows
2006-05-21 16:12
2006.07.02
Работа с CD-RW





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский