powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Разница между интерфейсом и абстрактным классом
15 сообщений из 15, страница 1 из 1
Разница между интерфейсом и абстрактным классом
    #38430293
Фотография Beduin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почему их разделили? Может кто-нибудь по простому объяснить.
...
Рейтинг: 0 / 0
Разница между интерфейсом и абстрактным классом
    #38430303
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Класс может расширять только один класс, но может реализовывать несколько интерфейсов.
...
Рейтинг: 0 / 0
Разница между интерфейсом и абстрактным классом
    #38430313
cdtyjv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Beduin ,
Цель интерфейса - легко и лаконично объяснить пользователю, как с ним работать.
Цель абстрактного класса - хранить в себе логику, общую для всех его наследников.
...
Рейтинг: 0 / 0
Разница между интерфейсом и абстрактным классом
    #38430347
Фотография Паша01
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По-простому, есть важное отличие. Класс, наследованный от абстрактного, уже будет привязан к этой иерархии классов . В случае с интерфейсами такого нет, поэтому дочерний класс можно приводить к любому расширяемому им интерфейсу. Это обеспечивает большую гибкость в тех случаях, когда делается рефакторинг всего или части проекта. Т.е. будет позволять что-то добавить или изменить в коде с минимальными действиями. Более подробно и с примерами читай в книгах, к примеру, "Философия Java".
...
Рейтинг: 0 / 0
Разница между интерфейсом и абстрактным классом
    #38430353
jdroid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BeduinПочему их разделили? Может кто-нибудь по простому объяснить.
Из за проблем возникающих при множественном наследовании например ромбовидное наследование (англ. diamond inheritance)
...
Рейтинг: 0 / 0
Разница между интерфейсом и абстрактным классом
    #38430885
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в 8 яве будет Virtual Extension Methods
...
Рейтинг: 0 / 0
Разница между интерфейсом и абстрактным классом
    #38430886
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Penkov Vladimirв 8 яве будет Virtual Extension Methods
А ещё дефолтные методы в интерфейсых. Это намного ближе к теме. :)
...
Рейтинг: 0 / 0
Разница между интерфейсом и абстрактным классом
    #38430894
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczPenkov Vladimirв 8 яве будет Virtual Extension Methods
А ещё дефолтные методы в интерфейсых. Это намного ближе к теме. :)

это оно и есть:

http://www.infoq.com/articles/java-8-vs-scala The Java 8 specification defines a draft for virtual extension methods. Virtual extension methods will add default implementations to new and/or existing methods of existing interfaces. Why is that?
...
Рейтинг: 0 / 0
Разница между интерфейсом и абстрактным классом
    #38430897
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Penkov Vladimirэто оно и есть:
Хм. И правда. Я давно читал уже. Видать спека тогда не устаканилась. Но там было более свободное решение, позволяющее добавлять методы в существующие классы. Т.е. фактически описывать метод вне класса. А в текущей реализации такая возможность доступна только путем модификации интерфейсов, реализуемых классом.
...
Рейтинг: 0 / 0
Разница между интерфейсом и абстрактным классом
    #38437775
chabapok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BeduinПочему их разделили?

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

Но я уверен - время покажет что и в скале где-то налажали. Обязательно со временем найдется что-то, что портит жизнь.
...
Рейтинг: 0 / 0
Разница между интерфейсом и абстрактным классом
    #38438131
Лагман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лол, в Java изобрели mixinы. Ну офигеть теперь, заживем.
...
Рейтинг: 0 / 0
Разница между интерфейсом и абстрактным классом
    #38438190
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛагманЛол, в Java изобрели mixinы. Ну офигеть теперь, заживем.

mixin позволяет налету добавить функционал объекту. тут это все compile time.
...
Рейтинг: 0 / 0
Разница между интерфейсом и абстрактным классом
    #38438294
avp.mk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Интерфейсы не могут содержать переменных (константы могут), но класс может реализовать их много (или ни одного).

До джавы 8 методы в интерфейсах не могли содержать тел (реализации), теперь могут. Теперь по сути это trait'ы.

До джавы 8 интерфейсы не могли содержать статических методов (теперь тоже могут!).

ЛагманЛол, в Java изобрели mixinы. Ну офигеть теперь, заживем.
Mixin'ов нет.
...
Рейтинг: 0 / 0
Разница между интерфейсом и абстрактным классом
    #38438319
Лагман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Penkov Vladimir,
авторWhen a class includes a mixin, the class implements the interface and includes, rather than inherits, all the mixin's attributes (fields, properties) and methods. They become part of the class during compilation .


avp.mk,

ссылку на Ваше "понимание" mixina.
...
Рейтинг: 0 / 0
Разница между интерфейсом и абстрактным классом
    #38438344
avp.mk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Лагманavp.mk,

ссылку на Ваше "понимание" mixina.
Моё """""понимание""""" основано на этой статье: http://rsdn.ru/article/scala/scala.xml#EDNAC
Код: sql
1.
2.
val pup: Friendly = new Dog with ExclamatoryGreeter
println(pup.greet())

При такой первой строке кода компилятор Scala создаст синтетический тип, который расширяет класс Dog и trait ExclamatoryGreeter, и создаст его экземпляр (синтетический тип генерируется автоматически компилятором, а не пишется вручную программистом).
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Разница между интерфейсом и абстрактным классом
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]