В чем отличие протоколов от абстрактных классов и интерфесов?

Разработчики языка Swift ввели новую парадигму, протоколо-ориентированное программирование. Я немного почитал на эту тему, но, так как в Swift'e не силен, понял не все. Есть ли принципиальные различия между этими протоколами и интерфейсами с абстрактными классами из Java?
  • Вопрос задан
  • 4958 просмотров
Решения вопроса 1
LeEnot
@LeEnot
Енот-андроид
Ну я, например, вижу отличия:
- в протоколе, в отличие от интерфейса, возможно задание переменных, переназначаемых реализующим протокол классом
- протокол расширяем
А вообще, насколько я понял, протокол это миксин. Т.е. в нем можно прописать реализацию, в отличие от интерфейсов Java. Конечно, тут можно упомянуть статические методы в интерфейсах Java 8, но, как по мне, статические методы это зло и они должны умереть :) Я вот сейчас, наверное, разливаюсь мыслию по древу, но! Когда я читал описание Kotlin, авторы обещали "Если вам в Java что-то не нравится, то с вероятностью 50% мы в Kotlin это исправили." Опачки - подумал я, загадал static methods и checked exceptions и попал в десятку.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы