Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

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

Прокрастин Ученик (141), закрыт 9 лет назад
Дополнен 13 лет назад
Перечитал много определений, но так и не понял логику функционирования. Кто может оп простому донести смысл? Я знаю что интерфейс как то компенсирует наследование классов. Знаю, что в нем объявляются методы, но не реализовываются. Что реализовываются методы интерфейса в специальном классе. Как это всё увязать между собой - не понятно.
Дополнен 13 лет назад
Платформа не важно какая, мне бы общий принцип, зачем нужны интерфейсы, может какой-то пример использования...
Дополнен 13 лет назад
про имплементацию слушком общё, мне бы конкретную реализацию
Дополнен 13 лет назад
то есть общий принцип на простом примере :)
Лучший ответ
Schweik Мыслитель (5826) 13 лет назад
----цитата:
Лежит на берегу пруда лягушка, мимо пробегает обезьяна:
- Скажи, лягушка, вода теплая?
Молчание. Обезьяна снова:
- Лягушка, скажи, вода теплая? !
Ни слова в ответ. Обезьяна (с раздражением) :
- Эй, зеленая, я тебя спрашиваю - вода теплая??? !
Лягушка, с легким презрением и обидой:
- Вообще-то я здесь лежу как женщина, а не как термометр.. .
----конец цитаты

Если термометр это прибор (наследует класс прибор) , то должна ли лягушка унаследовать все его свойства и функциональность?

Итак, пусть лягушка это земноводное (наследуется от земноводное) .

Первый вопрос, может ли при этом лягушка быть термометром (т. е. допустимо ли множественное наследование) ? Часть языков программирования это разрешают (т.. е. лягушка наследуется и от земноводного и от термометра) . Ява отрицает такую возможность, - лягушка, раз уж она земноводное, - не может быть ещё и термометром.

Второй вопрос, может ли лягушка быть использована как термометр? Ява даёт такую возможность через интерфейс. Если лягушка будет реализовывать интерфейс термометр, то её можно использовать как термометр.

Интерфейс обеспечивает совместимость классов на уровне функциональности, а не на уровне наследования.
Остальные ответы
Андрей Ясашных Мудрец (17187) 13 лет назад
Ты функции объявляешь в одном файле, а реализацию этих функций пишешь в другом! Хотя, если честно, я вопроса не понял... java - под какую платформу?
Александр Искусственный Интеллект (291344) 13 лет назад
интерфейсы нужны чтоб мог ты менять безболезненно конкретную имплементацию какого-то сервиса, так что пользующийся этим сервисом и не почувствовал бы изменений, поскольку обращался бы к ним через тот же самый интерфейс...
Alexey velikiy Гуру (2926) 13 лет назад
Может, и пример найду, но попробую просто пояснить для начала.

В 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(){
}
}
....
С шаблонами проектирования сложнее, там без диаграммы пояснить смысл происходящего сложно.. .
ЭЛГИН АБДУРАХМАНОВ Профи (533) 6 лет назад
спасибо за лягушка, стало понятно все
Похожие вопросы