Главная » Разработка для Android » Интерфейсы- JAVA ДЛЯ ANDROID

0

 

В других языках программирования (например, С++, Python и Perl) существует возможность, называемая множественным наследованием реализации (multiple implementation inheritance). При этом объект может наследовать реализации методов более чем от одного родительского класса. Такие иерархии наследования могут быть очень сложны и проявлять неожиданные свойства (например, наследовать две одноименные переменные поля от двух различных суперклассов). Разработчики Java решили отказаться от множественного наследования реализации в пользу простоты языка. В отличие от указанных языков, в Java класс может дополнять только один суперкласс.

Однако взамен многократного наследования реализации Java позволяет классу наследовать свойства от нескольких типов, используя при этом концепцию интерфейса. Интерфейсы позволяют определять тип, не определяя при этом его реализацию. Интерфейс можно считать абстрактным классом, все методы которого тоже абстрактны. Количество интерфейсов, которые может реализовать тот или иной класс, не ограничено.

Кроме того, интерфейсы предоставляют способ определения типа отдельно от реализации этого типа. Подобное разделение можно представить себе и в повседневной жизни. Например, если вы с коллегой хотите приготовить мохито, то можно распределить задачи и послать коллегу за мятой. Когда вы начинаете смешивать ингредиенты в стакане, уже неважно, купил ли коллега мяту в магазине или сходил во двор и просто нарвал свежих листьев. Важно, что у вас есть мята.

В качестве другого примера, иллюстрирующего потенциал интерфейсов, рассмотрим программу, которая должна отображать список контактов, отсортированных по адресам электронной почты. Как вы понимаете, в библиотеках Android содержатся стандартные процедуры для сортировки объектов. Однако поскольку эти процедуры являются стандартными, в них не заложена идея о том, как должно происходить упорядочение элементов конкретного класса. Чтобы воспользоваться библиотечными процедурами сортировки, классу нужен способ определения такого порядка. В Java классы решают эту задачу при помощи интерфейса Comparable.

Объекты типа Comparable реализуют метод compareTo. Один объект принимает другой похожий объект в качестве аргумента и возвращает целое число, которое указывает, является ли объект-аргумент большим, равным или меньшим, чем целевой. Библиотечные процедуры способны сортировать все, что является compareTo. Программный тип Contact должен быть compareTo и реализовывать compareTo, чтобы контакты могли быть отсортированы:

С внутрисистемной точки зрения процедуре Collections, sort известно лишь о том, что contacts – это список элементов, относящихся к типу Comparable. Процедура активирует относящийся к классу метод compareTo, чтобы решить, как упорядочить эти элементы.

Как видно из этого примера, интерфейсы позволяют разработчику многократно использовать стандартные процедуры, которые могут отсортировать любой список объектов, реализующий Comparable. Если выйти за рамки этого простого примера, то можно сказать, что интерфейсы Java позволяют претворять на практике различные паттерны программирования, хорошо описанные в других источниках.

Источник: Android. Программирование на Java для нового поколения мобильных устройств

По теме:

  • Комментарии