Wise Rabbit
12 уровень
В чем сущностная разница между наследованием и интерфейсом?
Обсуждается
Комментарии (7)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
AlekseiSoftware Engineer в CiscoExpert
27 января 2023, 18:56
Пятница, вечер, мне лень отвечать подробно :) Но отмечу, что ты задал отличный вопрос и тебе стоит на него получить полный ответ. Причина простая - в будущем, на каждом втором собеседовании тебе будут задавать этот вопрос.
+2
Wise Rabbit
27 января 2023, 20:23
спасибо) тогда буду ждать кого-нибудь кому не лень)
0
ГоффMaster
27 января 2023, 20:41
Ну или пусть возьмут на работу сразу после первого собеседования, что бы второго, на котором задают этот вопрос, не ждать...
+2
Wise Rabbit
27 января 2023, 20:54
спасибо) еще лучше чтобы кто-то помог разобраться, и тогда даже собеседование будет не нужно)
0
Wise Rabbit
27 января 2023, 21:20
У меня вот возникла только такая идея, и не знаю насколько она верная:
возможно при маленьком кол-ве классов, разницы между суперклассом и интерфейсом нет, она просто не проявляется. А если классов и методов много, то видимо линия наследования все время расширяет возможности суперкласса. Это похоже на суммирование с нарастающим итогом. А интерфейс - это вроде как выборка по методам, не затрагивающая (не расширяющая) возможности самих классов.
Т.е. вроде как я могу выбрать один метод, и с помощью интерфейса будут задействованы все классы, в которых этот метод есть....
Но не уверен🙂
0
ГоффMaster
28 января 2023, 03:52
Если честно, пусть меня заклюют корифеи, но я твой вопрос (а он у меня тоже возник) для себя решил примерно так:
1. Оно вот в джаве есть, есть классы, есть абстрактные классы и есть интерфейсы. Надо просто принять как есть, пусть это и не логично. В джаве много чего, на первый взгляд, нелогичного.
2. Абстрактные классы мало чем отличаются от интерфейсов, но у них разная история возникновения.
3. Джава изначально провозгласила, что множественное наследование классов невозможно, и на то были причины - сложно при множественном наследовании согласовать методы и переменные у детишек от двух разных классов, если в родительских классах переменные и методы пересекаются.
4. Но множественное наследование бывает очень полезно, когда нам надо моделировать реальные структуры, а они бывают весьма нелинейные и иерархия реальных структур не всегда строго вертикальная. (У боженьки есть чувство юмора - посмотрите на утконоса, от каких классов он мог бы наследоваться.)
5. Поэтому, что бы не отходить от религиозного запрета на множественное наследование классов, ввели некую сущность, которая множественное наследование при определённых ограничениях позволяет, и назвали эту сущность интерфейсом. В процессе развития джавы введённые ограничения послаблялись и интерфейс сейчас практически то же самое, что и абстрактный класс - с той лишь разницей, что абстрактный класс требует монополии от детишек, а интерфейс позволяет детишкам наследоваться и на стороне, от других интерфейсов.
5,5 Классу можно вменить несколько интерфейсов, но только один родительский класс (суперкласс в твоём лексиконе)
6. Всё это создало некую путаницу, но смотри п. 1.
7. Пятница, ночь, лень было писать попроще ;-)
+2
Wise Rabbit
28 января 2023, 06:50
Спасибо))
Уже суббота, утро, а писать всем лень🙂, (Но Ваш комментарий - приятное исключение 🙂).
Туман немного развеялся, но не полностью))
0