интерфейс java



Интерфейсы java

Автор Прокрастин задал вопрос в разделе Другие языки и технологии

Интерфейс в java. Какая логика работы? и получил лучший ответ

Ответ от Alexey[гуру]
----цитата:
Лежит на берегу пруда лягушка, мимо пробегает обезьяна:
- Скажи, лягушка, вода теплая?
Молчание. Обезьяна снова:
- Лягушка, скажи, вода теплая? !
Ни слова в ответ. Обезьяна (с раздражением) :
- Эй, зеленая, я тебя спрашиваю - вода теплая??? !
Лягушка, с легким презрением и обидой:
- Вообще-то я здесь лежу как женщина, а не как термометр.. .
----конец цитаты
Если термометр это прибор (наследует класс прибор) , то должна ли лягушка унаследовать все его свойства и функциональность?
Итак, пусть лягушка это земноводное (наследуется от земноводное) .
Первый вопрос, может ли при этом лягушка быть термометром (т. е. допустимо ли множественное наследование) ? Часть языков программирования это разрешают (т.. е. лягушка наследуется и от земноводного и от термометра). Ява отрицает такую возможность, - лягушка, раз уж она земноводное, - не может быть ещё и термометром.
Второй вопрос, может ли лягушка быть использована как термометр? Ява даёт такую возможность через интерфейс. Если лягушка будет реализовывать интерфейс термометр, то её можно использовать как термометр.
Интерфейс обеспечивает совместимость классов на уровне функциональности, а не на уровне наследования.

Ответ от ЍЛГИН АБДУРАХМАНОВ[активный]
спасибо за лягушка, стало понятно все

Ответ от Alexey velikiy[гуру]
Может, и пример найду, но попробую просто пояснить для начала.
В Java, как ты знаешь, отсутствует множественное наследование. Первая функция интерфейсов - имитировать такую возможность множественного наследования. Класс может иметь только одного предка, но на количество реализуемых им интерфейсов никаких ограничений не накладывается. Все методы каждого из интерфейсов, которые реализуются создаваемым тобою классом, обязательно должны быть в создаваемом классе реализованы (реализация может быть пустой { }, но она ДОЛЖНА БЫТЬ!).
Различные классы могут реализовывать один и тот же интерфейс (поведение) по-разному.
Пример: интерфейс LayoutManager2 реализуется различными классами-раскладчиками (BorderLayout, CardLayout, GridBagLayout и т. д.) , и именно в зависимости от реализации этого интерфейса раскладчики по разному выполняют работу по размещению компонентов в контейнере (кстати, контейнер - компонент, потомок класса Component, реализующий интерфейс Container !!!). Вернёмся к раскладчикам - я пример привёл потому, что хотел продемонстрировать, что именно при проектировании (важно - !) делает реализация классами-раскладчиками интерфейса LayoutManager2: реализуя этот интерфейс, классы-раскладчики реализуют паттерн (шаблон) проектирования Strategy (стратегия) , позволяющий объединить в одну категорию различные классы, осуществляющие выполнение некоторой функциональности (реализацию поведения объектов) различными способами. Это более важная функция интерфейсов в Java - обеспечение возможности создания и применения ШАБЛОНОВ ПРОЕКТИРОВАНИЯ, одного из самых мощных инструментов разработки программного обеспечения. Нету под рукой сейчас диаграммы, с UML-диаграммой понятнее было бы... Ну, попробую пример кода сходу прямо...
....
// объявлен интерфейс i
interface i{
....
// и в нём - метод f1, ничего не возвращающий и не имеющий формальных параметров
void f1();
}
....
class x implements i{ // если класс x реализует (implements) интерфейс i,
....
// то он обязан иметь хотя бы пустую (ничего не делающую) реализацию метода void f1()
void f1(){
}
}
....
С шаблонами проектирования сложнее, там без диаграммы пояснить смысл происходящего сложно.. .

Ответ от Александр[гуру]
интерфейсы нужны чтоб мог ты менять безболезненно конкретную имплементацию какого-то сервиса, так что пользующийся этим сервисом и не почувствовал бы изменений, поскольку обращался бы к ним через тот же самый интерфейс...

Ответ от Андрей Ясашных[гуру]
Ты функции объявляешь в одном файле, а реализацию этих функций пишешь в другом! Хотя, если честно, я вопроса не понял... java - под какую платформу?

Ответ от 22 ответа[гуру]
Привет! Вот подборка тем с похожими вопросами и ответами на Ваш вопрос: Интерфейс в java. Какая логика работы?
Автокатастрофа фильм на Википедии
Посмотрите статью на википедии про Автокатастрофа фильм
Интерфейс Java на Википедии
Посмотрите статью на википедии про Интерфейс Java
Интерфейс объектно-ориентированное программирование на Википедии
Посмотрите статью на википедии про Интерфейс объектно-ориентированное программирование
История повседневности на Википедии
Посмотрите статью на википедии про История повседневности
История подводного кораблестроения на Википедии
Посмотрите статью на википедии про История подводного кораблестроения
История политических и правовых учений на Википедии
Посмотрите статью на википедии про История политических и правовых учений
История полиции России на Википедии
Посмотрите статью на википедии про История полиции России
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*