Интерфейс - это своего рода набор правил, описывающие совокупность возможностей, предоставляемых классом.
В интерфейсе задается набор методов, которые должен реализовывать класс, содержащий интерфейс. Один интерфейс могут использовать сразу несколько классов, так же как и один класс может быть расширен несколькими интерфейсами (в этом случае класс должен содержать все методы всех интерфейсов). В этом случае интерфейсы указываются через запятую в объявлении класса.
Так как класс может наследовать несколько интерфейсов, то их использование дает возможность расширить возможности создаваемого класса. В отличие от интерфейса, простое наследование ограничивает создаваемый класс рамками только родительского класса.
Для указания того, что класс наследует интерфейс надо указать слово implements.
Например:
// интерфейс
interface Fruit {
void setName(String s);
}
//класс
class Apple implements Fruit {
String name;
public String getName() { // добавляем свой метод
return name;
}
public void setName(String s) { // описываем метод интерфейса
this.name = s;
}
public static void main(String[] args) {
Applemy1 = new Apple();
my1.setName("Apple");
System.out.println(my1.getName());
}
}
Можно объявить переменную с типом данных, являющимся наименованием интерфейса, например для примера ниже строку Apple my1 = new Apple(); заменим на Fruit my1 = new Apple();
В этом случае при вызове метода my1.getName() будет выведена ошибка, так как в интерфейсе Fruit нет такого метода.