Учебники по Java

Ява ГЛАВНАЯ Введение в Java Начало работы с Java Синтаксис Java Java-комментарии Java-переменные Типы данных Java Приведение типов Java Операторы Java Java-строки Java-математика Логические значения Java Java, если...иначе Java-переключатель Java-цикл во время выполнения Java для цикла Перерыв/продолжение Java Массивы Java

Java-методы

Java-методы Параметры метода Java Перегрузка метода Java Область применения Java Java-рекурсия

Java-классы

Java ООП Классы/объекты Java Атрибуты класса Java Методы класса Java Конструкторы Java Модификаторы Java Инкапсуляция Java Java-пакеты/API Наследование Java Java-полиморфизм Внутренние классы Java Java-абстракция Java-интерфейс Перечисления Java Пользовательский ввод Java Дата Java Список массивов Java Связанный список Java Java HashMap Набор хэшей для Java Java-итератор Классы-оболочки Java Исключения Java Java регулярное выражение Java-потоки Java-лямбда

Обработка файлов Java

Java-файлы Создание/запись файлов Java Файлы чтения Java Java Удалить файлы

Java Как

Добавить два числа

Справочник по Java

Ключевые слова Java Строковые методы Java Java математические методы

Примеры Java

Примеры Java Компилятор Java Java-упражнения Java-викторина Java-сертификат


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и staticfinal
  • Интерфейс не может содержать конструктор (поскольку его нельзя использовать для создания объектов)

Зачем и когда использовать интерфейсы?

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();
  }
}