Создаю интерфейс:
static interface A {
void Click(long id);
}
Я не могу понять какими свойствами будет обладать переменная, если ее инициализировать таким образом:
private A listener;
Что при такой инициализации происходит с переменной?
Какими данными или свойствами заполняется переменная?
Интерфейсная переменная это как бы ссылка на объект скажем так под определенным углом.
Допустим есть объект типа Стол, у него есть методы сидеть за столом, обедать за столом, разобрать стол, собрать стол.
Есть теперь интерфейс типа Мебель, у него 2 метода: разобрать мебель и собрать мебель.
Теперь, если объект типа Стол присвоите к переменной типа Мебель, то вы с переменной Мебель не сможете сесть пообедать, а сможете только собрать и разобрать.
Преимуществом такого подхода является, что вы точно также можете поступить со Стулом, Диваном и Шкафом и сможете хранить/работать с множеством шкафов, столов и проч. мути как с Мебелью - например хотя бы так:
ArrayList<Мебель> мебель;
Вместо того, чтобы писать:
ArrayList<Стол> столы;
ArrayList<Стул> стулья;
ArrayList<Шкаф> шкафы;
Как бы удобно...
Никакими, кроме тех, что описаны в интерфейсе. Т.е. у такого объекта можно дернуть только метод Click(long id) и все. Все остальное, какие бы поля и методы там в реальном объекте не существовали - вас не касается, в этом и смысл абстрактных интерфейсов - не думать о реализации.
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости