Интерфейсы java
Автор Прокрастин задал вопрос в разделе Другие языки и технологии
Интерфейс в java. Какая логика работы? и получил лучший ответ
Ответ от Alexey[гуру]
----цитата:
Лежит на берегу пруда лягушка, мимо пробегает обезьяна:
- Скажи, лягушка, вода теплая?
Молчание. Обезьяна снова:
- Лягушка, скажи, вода теплая? !
Ни слова в ответ. Обезьяна (с раздражением) :
- Эй, зеленая, я тебя спрашиваю - вода теплая??? !
Лягушка, с легким презрением и обидой:
- Вообще-то я здесь лежу как женщина, а не как термометр.. .
----конец цитаты
Если термометр это прибор (наследует класс прибор) , то должна ли лягушка унаследовать все его свойства и функциональность?
Итак, пусть лягушка это земноводное (наследуется от земноводное) .
Первый вопрос, может ли при этом лягушка быть термометром (т. е. допустимо ли множественное наследование) ? Часть языков программирования это разрешают (т.. е. лягушка наследуется и от земноводного и от термометра). Ява отрицает такую возможность, - лягушка, раз уж она земноводное, - не может быть ещё и термометром.
Второй вопрос, может ли лягушка быть использована как термометр? Ява даёт такую возможность через интерфейс. Если лягушка будет реализовывать интерфейс термометр, то её можно использовать как термометр.
Интерфейс обеспечивает совместимость классов на уровне функциональности, а не на уровне наследования.
спасибо за лягушка, стало понятно все
Может, и пример найду, но попробую просто пояснить для начала.
В 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 - под какую платформу?
(JAVA) Чем отличается Форма JPanel и Форма JFrame? И что такое Интерфейс Java ?
Тем, что JPanel располагается внутри формы.
Максим
(109960)
Интерфейс ява это
подробнее...
java CharSequence Какие методы должен определить класс, реализующий интерфейс java.lang.CharSequence?
Provides for system input and output through data streams, serialization and the file system.
подробнее...
Программа для автоматизации повторяющихся действий.
Ghost Automizer 2.8
Когда курсор мышки внезапно начинает самостоятельно ползать по экрану, или
подробнее...
Что такое объекты в Java?
1. Изучать Java надо не с ООП, а с императивного процедурного программирования. Так что не с того
подробнее...
Какая книга лучше для java
#yahrefs550376#
Вебер, Д Технология JAVA в подлиннике. – СПб, 1998 –
Смирнов, Н.
подробнее...
Java. Есть ли разница между abstract классами и interface?
Абстрактный класс - это класс, у которого не реализован один или больше методов (некоторые языки
подробнее...
контекст java-приложения. возможно ли в этом разобраться?
т. е. для тебя Interface и ApplicationContext всё одно и тоже?...
тогда плохи твои
подробнее...
Java | Как после extends в описании класса добавить несколько слов (+) ?
никак.
в Java нет множественного наследования объектов.
можно наследовать несколько
подробнее...
как создать свою java игру на телефон???
Как создать java игру без знаний программирования?
EMG Studio Alpha 1.0.1
EMG
подробнее...
Что конкретно пишут на языке Java? Над чем работают ?
На Java чаще всего пишут именно корпоративные приложения для предприятий Америки и Европы. На
подробнее...