Интерфейс — это сущность с простым перечнем неких методов, выглядящая как класс, которую можно подключить к реальному классу, где эти методы будут уже реализовываться в коде. Будучи подключенным к разным классам, интерфейс определяет одинаковые имена для своих методов, которые в этих классах нужно будет реализовать (прописать их код). То есть, получается одинаковый интерфейс взаимодействия со всеми классами, к которым подключен этот интерфейс.
Благодаря такой конструкции возникает дополнительная возможность обращаться к этим методам, реализованным в разных классах, через переменную одного и того же типа (тип переменной —конкретный интерфейс), а не через разные имена классов, в которых эти методы реализованы. Разумеется, предварительно нужно присвоить нужный класс этой переменной. При этом в переменную попадает только та часть класса, которая объявлена этим интерфейсом.
Практически это выглядит следующим образом:
В Java это выглядит примерно так. В смысл кода особенно не вникайте, он максимально сокращён. Продемонстрированы всего лишь языковые конструкции:
Пункт 1:
Пункт 2:
Пункты 3 и 4:
Благодаря такой конструкции возникает дополнительная возможность обращаться к этим методам, реализованным в разных классах, через переменную одного и того же типа (тип переменной —конкретный интерфейс), а не через разные имена классов, в которых эти методы реализованы. Разумеется, предварительно нужно присвоить нужный класс этой переменной. При этом в переменную попадает только та часть класса, которая объявлена этим интерфейсом.
Практически это выглядит следующим образом:
- Описывается интерфейс, в котором, как в классе, перечисляются все нужные нам методы, но с пустыми телами, без кода.
- Описывается класс, к которому специальной языковой конструкцией подключают интерфейс, и в этом классе прописывают реализацию описанных в интерфейсе методов.
- В другом классе объявляется переменная, тип которой обозначается в виде имени описанного выше интерфейса. То есть тип — наш интерфейс.
- Этой переменной присваивается класс, к которому выше был подключен интерфейс. Переменная становится мостиком к методам интерфейса, описанным в классе.
В Java это выглядит примерно так. В смысл кода особенно не вникайте, он максимально сокращён. Продемонстрированы всего лишь языковые конструкции:
Пункт 1:
public interface onItemClickListener {
public void itemClick(int position);
}
Пункт 2:
public class Activity1 implements onItemClickListener {
int position = 0;
public void itemClick(int position) {
this.position = position;
}
}
Пункты 3 и 4:
public class Activity2 { onItemClickListener listener; public void onAttach(Activity activity) { listener = (onItemClickListener) activity; } public void onListItemClick(ListView l, View v, int position, long id) { listener.itemClick(position); } }
Комментариев нет:
Отправить комментарий