Java -интерфейс
Интерфейсы
Еще один способ добиться абстракции в Java — использовать интерфейсы.
An interface
— это полностью « абстрактный класс », который используется для группировки связанных методов с пустыми телами:
Пример
// interface
interface Animal {
public void animalSound(); // interface method (does not have a body)
public void run(); // interface method (does not have a body)
}
Чтобы получить доступ к методам интерфейса, интерфейс должен быть «реализован» (вроде как унаследован) другим классом с implements
ключевым словом (вместо extends
). Тело метода интерфейса предоставляется классом «implement»:
Пример
// Interface
interface Animal {
public void animalSound(); // interface method (does not have a body)
public void sleep(); // interface method (does not have a body)
}
// Pig "implements" the Animal interface
class Pig implements Animal {
public void animalSound() {
// The body of animalSound() is provided here
System.out.println("The pig says: wee wee");
}
public void sleep() {
// The body of sleep() is provided here
System.out.println("Zzz");
}
}
class Main {
public static void main(String[] args) {
Pig myPig = new Pig(); // Create a Pig object
myPig.animalSound();
myPig.sleep();
}
}
Примечания к интерфейсам:
- Как и абстрактные классы , интерфейсы нельзя использовать для создания объектов (в приведенном выше примере невозможно создать объект «Животное» в MyMainClass)
- Методы интерфейса не имеют тела — тело предоставляется классом «реализовать».
- При реализации интерфейса вы должны переопределить все его методы.
- Методы интерфейса по умолчанию
abstract
иpublic
- Атрибуты интерфейса по умолчанию
public
иstatic
final
- Интерфейс не может содержать конструктор (поскольку его нельзя использовать для создания объектов)
Зачем и когда использовать интерфейсы?
1) Для обеспечения безопасности - скройте некоторые детали и покажите только важные детали объекта (интерфейса).
2) Java не поддерживает «множественное наследование» (класс может наследоваться только от одного суперкласса). Однако этого можно добиться с помощью интерфейсов, поскольку класс может реализовывать несколько интерфейсов. Примечание. Чтобы реализовать несколько интерфейсов, разделите их запятой (см. пример ниже).
Несколько интерфейсов
Чтобы реализовать несколько интерфейсов, разделите их запятой:
Пример
interface FirstInterface {
public void myMethod(); // interface method
}
interface SecondInterface {
public void myOtherMethod(); // interface method
}
class DemoClass implements FirstInterface, SecondInterface {
public void myMethod() {
System.out.println("Some text..");
}
public void myOtherMethod() {
System.out.println("Some other text...");
}
}
class Main {
public static void main(String[] args) {
DemoClass myObj = new DemoClass();
myObj.myMethod();
myObj.myOtherMethod();
}
}