Интерфейсы в Java

Введение в объектно-ориентированное программирование на Java

Sani Yusuf

Lead Software Engineering Content Developer

Ограничения наследования

  • При наследовании передаются все члены класса
  • Выбирать конкретные члены для наследования нельзя

  // Car class   
  class Car {
    // Battery capacity is only applicable
    // to electric cars
    public int batteryCapacity;

    void drive() {

    }  
  }


  // Toyata class
  class Toyota extends Car {  
    void drive(){

    }           
  }


// Man class public static class Main { public static void main(String[] args) { Toyota myToyota = new Toyota(); // All cars will inherit the "batteryCapacity" // even if they are not electric cars System.out.println( myToyota.batteryCapacity); // Not applicable } }
Введение в объектно-ориентированное программирование на Java

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

  • Интерфейсы позволяют выборочно наследовать свойства и методы
  • Классы подключают интерфейсы с помощью ключевого слова implements

  // ElectricCar Interface 
  interface ElectricCar {

  }





  // Tesla implementing the
  // ElectricCar interface
  class Tesla implements ElectricCar {

  }








Введение в объектно-ориентированное программирование на Java

Добавление свойств в интерфейсы

  • По соглашению свойства именуются в стиле UPPER_SNAKE_CASE
  • Значение задаётся сразу и не может быть изменено
  • За кулисами свойства объявляются как public static final

  interface ElectricCar {
    // Implictly public static final
    // Cannot be changed
    int BATTERY_CAPACITY = 310;

  }




Введение в объектно-ориентированное программирование на Java

Добавление методов в интерфейсы

  • Интерфейсы, как правило, содержат методы
  • По умолчанию методы являются abstract и не имеют реализации
  • Интерфейсы могут содержать конкретные методы с реализацией
  • Все abstract-методы должны быть реализованы в подклассе
  interface ElectricCar {
    // Implictly public static final
    // Cannot be changed
    int BATTERY_CAPACITY = 310;


// This is an abstract method by default void charge();
// This is a concrete method void autoPark() { }
}
class Tesla implements ElectricCar { // Must be implemented public void charge() { } }
Введение в объектно-ориентированное программирование на Java

Давайте потренируемся!

Введение в объектно-ориентированное программирование на Java

Preparing Video For Download...