Страницы

Поиск по вопросам

понедельник, 10 декабря 2018 г.

Зачем нужен интерфейс? [дубликат]

На данный вопрос уже ответили: Отличия абстрактного класса от интерфейса (abstract class and interface) 12 ответов Зачем в java интерфейс, если есть абстрактные классы? Кроме множественного наследования, в чем главные различия?


Ответ

Разница в концепции.
Абстрактные классы помогают создавать иерархию с общими чертами. Важным тут является именно связь родитель — наследник. Например абстрактный класс «птица», ее наследники — конкретные виды птиц.
При использовании нам не важно, какая именно птица будет — мы используем ссылку с типом абстрактного класса. И используем методы «кричать», «ходить», «летать». Все ок, но что если не все птицы умеют летать? Например страус, пингвин.
Здесь нам могут помочь интерфейсы, которым не важна связь родитель — наследник, они задают правила поведения. Мы можем выделить метод «летать» в интерфейс и реализовать его у тех птиц, которые могут летать; при этом каждая птица может летать характерным только для нее способом. Так же мы сможем в будущем реализовать этот интерфейс у самолета и определить его способ полета.
Например, у нас на острове группа зверей, птиц, машин и нам надо переправить их на другой остров. В этом случае это сделают те, кто реализует интерфейс с методом «летать».
И здесь мы получаем две ветви полиморфизма, одна задает связь родитель —наследник, вторая — поведение.

Комментариев нет:

Отправить комментарий