Переменные с типом интерфеса

210
20 июня 2017, 23:47

Создаю интерфейс:

static interface A {
   void Click(long id);
}

Я не могу понять какими свойствами будет обладать переменная, если ее инициализировать таким образом:

private A listener;

Что при такой инициализации происходит с переменной?
Какими данными или свойствами заполняется переменная?

Answer 1

Интерфейсная переменная это как бы ссылка на объект скажем так под определенным углом.

Допустим есть объект типа Стол, у него есть методы сидеть за столом, обедать за столом, разобрать стол, собрать стол.

Есть теперь интерфейс типа Мебель, у него 2 метода: разобрать мебель и собрать мебель.

Теперь, если объект типа Стол присвоите к переменной типа Мебель, то вы с переменной Мебель не сможете сесть пообедать, а сможете только собрать и разобрать.

Преимуществом такого подхода является, что вы точно также можете поступить со Стулом, Диваном и Шкафом и сможете хранить/работать с множеством шкафов, столов и проч. мути как с Мебелью - например хотя бы так:

ArrayList<Мебель> мебель;

Вместо того, чтобы писать:

ArrayList<Стол> столы;
ArrayList<Стул> стулья;
ArrayList<Шкаф> шкафы;

Как бы удобно...

Answer 2

Никакими, кроме тех, что описаны в интерфейсе. Т.е. у такого объекта можно дернуть только метод Click(long id) и все. Все остальное, какие бы поля и методы там в реальном объекте не существовали - вас не касается, в этом и смысл абстрактных интерфейсов - не думать о реализации.

READ ALSO
Прямоугольный треугольник [требует правки]

Прямоугольный треугольник [требует правки]

Нужно нарисовать прямоугольный треугольник через циклыДолжно получиться так:

314
Как правильно передать JSON в метод пост для тестирования?

Как правильно передать JSON в метод пост для тестирования?

Совсем недавно начал использовать unit тестированиеС методами GET и POST, которым в явном виде передаю какие параметры вопросов уже не возникает

447
Проверка последовательных дат Java

Проверка последовательных дат Java

Есть массив дат - {"2017-06-17", "2017-06-19", "2017-06-16", "2017-06-18"}

306
Java Graphics Pictures

Java Graphics Pictures

Здравствуйте! Пишу игру, добавляю 2 картинку в JFrame - подставка, картошкаВсегда отображается по разному

284