Вопрос № 131764: Уважаемые эксперты, помогите с вопросом. В Ява используются интерфейсы, но по какой причине нельзя просто скопировать методы в несколько наследующих классов? Точнее, почему наследование от интерфейсов в Ява удобнее использовать, чем просто Копи-Пэйст...
Вопрос № 131.764
Уважаемые эксперты, помогите с вопросом. В Ява используются интерфейсы, но по какой причине нельзя просто скопировать методы в несколько наследующих классов? Точнее, почему наследование от интерфейсов в Ява удобнее использовать, чем просто Копи-Пэйстить методы в классы?
Отвечает: Алексей Демаков
Здравствуйте, Егоров Ярослав Владимирович!
В интерфейсах Java можно описать только сигнатуру метода (имя, типы возвращаемого значения, параметров). То есть, реализацию методов из терфейсов унаследовать нельзя, только из базовых классов.
Чем наследование реализации удобнее копирования? Тем, что изменения надо вносить только в одно место и это снижает вероятность ошибок.
Гораздо интереснее вопрос - почему надо использовать интерфейсы? А ответ таков - можно и не использовать, но не в Java, а в языках с динамической типизацией и duck typing ("утиная типизация", от выражения "ходит как утка, крякает как утка, значит - утка), например, Ruby. В таких языках объектом определенного типа признается любой объект, обладающий необходимым набором методов, независимо от класса этого объекта. В Java типы жестко связаны с интерфейсами - объект имеет нужны тип только если указано,
что он реализует соответствующий интерфейс (ну или унаследован от определенного класса, тут и интерфейс и реализация вместе).
Ответ отправил: Алексей Демаков (статус: Студент)
Ответ отправлен: 11.04.2008, 23:02 Оценка за ответ: 5 Комментарий оценки: Возможно я немного неточно сформулировал вопрос, но ответ был дан именно на тот вопрос, который мне был нужен. Благодарю.
Отвечает: Errandir
Здравствуйте, Ярослав Владимирович!
Ещё немного в догонку:
http://ru.wikipedia.org/wiki/Полиморфизм в языках программирования
--------- Si vox est - canta!
Ответ отправил: Errandir (статус: 9-ый класс)
Ответ отправлен: 11.04.2008, 23:31 Оценка за ответ: 5 Комментарий оценки: Благодарю за ссылку. Чтение этого материала было довольно познавательно...