|
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
|
|
Абстрактные классы и интерфейсы. Разница01.09.2017, 18:35. Показов 12917. Ответов 30
Метки нет (Все метки)
Вот хоть убейте, не могу понять разницы между абстрактным классом и интерфейсом. До этого изучал C++, там не было интерфейсов, скорее всего из-за этого проблемы моего непонимания...
Нет, я понимаю, что в абстрактном классе могут быть методы, которые имеют реализацию, но хоть один метод должен быть абстрактным, напротив в интерфейсах все методы должны быть чистым протоколом... В этом чтоли только различие? Ну не делай ты в абстрактном классе методов с реализацией и все, что его будет отличать от интерфейса? Или интерфейсы сделаны для того, чтобы можно было реализовывать "неполное" множественное наследование? Ну так не запрещали бы множественного наследования... Какие еще различия есть? Пока я не увидел глобальной разницы...
0
|
|
| 01.09.2017, 18:35 | |
|
Ответы с готовыми решениями:
30
Абстрактные классы и интерфейсы Интерфейсы и абстрактные классы Интерфейсы и абстрактные классы: каково их назначение |
|
|
|
| 01.09.2017, 19:16 | |
Сообщение было отмечено Bretbas как решение
Решение
Интерфейс не может иметь полей, только методы.
Интерфейс может наследоваться только от интерфейса. У Интерфейса члены не могут иметь модификаторов доступа, они по умолчанию открытые. Абстрактный Класс может наследоваться от множества интерфейсов, но только от одного класса. Интерфейс от класса наследоваться не может. Самое главное: Абстрактные классы применяются когда необходимо установить какое-то поведение для всей иерархии по умолчанию. А интерфейс применяется когда нужно расширить поведение класса.
4
|
|
|
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
|
|||
| 01.09.2017, 19:28 [ТС] | |||
|
RunningMan,
0
|
|||
|
263 / 224 / 108
Регистрация: 09.12.2015
Сообщений: 652
|
||
| 01.09.2017, 19:36 | ||
|
И если, например, метод принимает в качестве параметра интерфейс, то ему можно подсунуть как класс, так и структуру, которые этот интерфейс реализуют. С абстрактным классом такое не пройдёт.
2
|
||
|
677 / 479 / 216
Регистрация: 06.09.2013
Сообщений: 1,312
|
|
| 01.09.2017, 19:37 | |
|
Абстрактный класс все таки несет в себе какую-то базовую функциональность обычно.
А интерфейс только заявляет о том, что к объекту можно обратится, используя заданный протокол, независимо от того, что из себя этот объект представляет. Это вообще не наследование никакое.
1
|
|
|
263 / 224 / 108
Регистрация: 09.12.2015
Сообщений: 652
|
|
| 01.09.2017, 19:43 | |
|
Класс не может содержать несколько методов с одинаковыми сигнатурами.
Но это становится возможным, если эти методы будут принадлежать разным интерфейсам, а сам класс будет реализовывать их явно. Хотя, это скорее вынужденная мера, чем фича.
1
|
|
|
310 / 318 / 119
Регистрация: 29.10.2011
Сообщений: 1,006
|
|
| 01.09.2017, 20:04 | |
|
Bretbas, Главное понять семантику этих двух вещей. Причем в отвязке от программирования. Где в вашей повседневной жизни встречаются интерфейсы и какая их роль. А где абстракции.
Затем уже возвращаясь к нашему родному C# все станет очевидным. Это же ООП. Здесь мы описываем различные вещи понятным нам способом, который с детства наблюдаем в нашей объективной реальности) Абстрактный класс - это обычный класс с некоторой "неопределенностью" Интерфейс - это перечень членов класса, с которыми может работать внешний код (необязательно все сразу).
3
|
|
|
|
|||
| 01.09.2017, 20:14 | |||
|
если нет ключевого слова Interface в С++, это же не значит что там нет интерфейсов. видел ответ, сейчас нашел пост№4 Чем отличается интерфейс от абстрактного класса?
1
|
|||
|
|
||||||
| 01.09.2017, 20:30 | ||||||
|
Добавлено через 5 минут
3
|
||||||
|
|
|||
| 01.09.2017, 20:35 | |||
|
В С++ интерфейс -- условность, которую легко нарушить.
1
|
|||
|
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
|
|||||||||
| 01.09.2017, 20:45 [ТС] | |||||||||
|
RunningMan,
Fleder, Не могут быть базовыми под структуры.
0
|
|||||||||
|
|
||
| 01.09.2017, 20:47 | ||
|
Буду кэпом
3
|
||
|
|
||
| 01.09.2017, 20:55 | ||
|
3
|
||
|
263 / 224 / 108
Регистрация: 09.12.2015
Сообщений: 652
|
|||||||
| 01.09.2017, 20:56 | |||||||
1
|
|||||||
|
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
|
||||
| 01.09.2017, 21:13 [ТС] | ||||
|
RunningMan,
Wolfdp,
0
|
||||
|
964 / 485 / 241
Регистрация: 02.06.2016
Сообщений: 760
|
||
| 02.09.2017, 00:04 | ||
|
через интерфейс выполняется дольше чем виртуального
0
|
||
|
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
|
||
| 02.09.2017, 08:00 [ТС] | ||
|
Aael,
Внатуре? А почему так то? Виртуальный долго вызывается, а интерфейсный еще дольше?
0
|
||
|
|
||||||||||||
| 02.09.2017, 09:03 | ||||||||||||
0
|
||||||||||||
|
964 / 485 / 241
Регистрация: 02.06.2016
Сообщений: 760
|
|
| 02.09.2017, 09:59 | |
|
Wolfdp, не профи, но судя по всему у интерфейса своя таблица накостыленная поверх обычной и при исполнении происходят "лишние" вызовые, что дает существенный повод для оптимизации с отказом от использования интрефейсов (сарказм). Вот есть статья (перевод и обсуждение). Кстати, есть такойже тест как у вас (здесь) где документально подтверждено, что интерфейсы медленнее.
* пс за актуальность информации не отвечаю
0
|
|
|
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
|
||||||||||||||||
| 02.09.2017, 11:03 [ТС] | ||||||||||||||||
|
Wolfdp, Aael, Имелось ввиду вызова одного и того же метода из базового, интерфейсного и самого класса? Или все-таки сравнить вызов абстрактного метода с вызовом метода интерфейса?
MyClass, который поддерживает определенный интерфейс IMyInterface. В интерфейсе объявлен метод, назовем его void Method(). Мне при проектировании этого класса MyClass, лучше явно указывать, что void Method() это метод интерфейса IMyInterface? Тоесть:
MyClass, а у них может оказаться тоже метод void Method(), и придется заново переписывать класс MyClass для предотвращения этой неоднозначности
0
|
||||||||||||||||
| 02.09.2017, 11:03 | |
|
Помогаю со студенческими работами здесь
20
Интерфейсы и абстрактные классы: обеспечить работу методов в конечном классе Абстрактные классы абстрактные классы Абстрактные классы Интерфейс и абстрактные классы Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/
O1rJuneU_ls
https:/ / vkvideo. ru/ video-115721503_456239114
|
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ВВЕДЕНИЕ
Введу сокращения:
аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
|
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi
ветка по-частям.
коммит Create переделка под биомассу. txt
вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
|
|
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ *
Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях.
Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её.
Последовательность действий:. . .
|
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
|
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение.
И на уровне агентов добавится между грибами или бактериями взаимодействий.
До того я пробовал подход через многомерные массивы,. . .
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|