0Pricing
Java Academy · Урок

Интерфейсы на практике

Используйте интерфейсы как типы, передавайте их в методы и легко заменяйте реализации. Практикуйтесь в небольших шаблонах гибкого кода.

«Интерфейсы на практике» — бесплатный урок Java Academy на CoddyKit. Это урок 1 из 3. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Java Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Java Academy содержит 3 уроков всего.

Обзор

Интерфейсы на практике: рассматривайте возможности как типы и не связывайте вызывающий код с конкретными классами. Можно передавать интерфейс методу, хранить его в списке и при необходимости заменять другой реализацией.

Интерфейс как параметр

Методы становятся гибче, если принимают тип интерфейса в качестве параметра:

  • Вызывающий код остаётся неизменным.
  • Разные классы могут реализовать один и тот же контракт и использоваться одинаково.
  • В тесте можно быстро подставить имитацию или заглушку и проверить работу.

Код: возможность Printable

Метод использует контракт Printable, а не конкретный класс; даже если реализации меняются, вызывающий код остаётся тем же.

public class Main {
  // 1) Define a tiny capability
  static interface Printable { void print(); }

  // 2) Two implementations
  static class TextDoc implements Printable {
    public void print() { System.out.println("[TextDoc] Printing text pages"); }
  }
  static class Photo implements Printable {
    public void print() { System.out.println("[Photo] Printing a photo"); }
  }

  // 3) A method that depends on capability, not class
  static void runJob(Printable p) {
    p.print(); // caller does not care which class it is
  }

  public static void main(String[] args) {
    runJob(new TextDoc());
    runJob(new Photo());
  }
}

Интерфейс как возвращаемый тип

Иногда фабричный метод возвращает интерфейс. Вызывающий код видит только возможности и не обязан знать конкретный класс. Это уменьшает связанность и повышает модульность.

Код: стратегия с Formatter

Один и тот же метод работает с разными реализациями Formatter. Нам удалось изменить поведение, не меняя класс.

public class Main {
  // Strategy: different ways to format text
  static interface Formatter { String format(String s); }

  static class UpperFormatter implements Formatter {
    public String format(String s) { return s.toUpperCase(); }
  }
  static class LowerFormatter implements Formatter {
    public String format(String s) { return s.toLowerCase(); }
  }

  // Uses any Formatter
  static String show(String title, Formatter f) {
    return title + " -> " + f.format(title);
  }

  public static void main(String[] args) {
    System.out.println(show("Hello", new UpperFormatter()));
    System.out.println(show("Hello", new LowerFormatter()));
  }
}

Код: список интерфейсов

Массив или список может иметь тип интерфейса. Цикл выполняет один и тот же вызов, а каждый элемент запускает собственную реализацию.

public class Main {
  static interface Task { void run(); }

  static class EmailTask implements Task { public void run(){ System.out.println("Send email"); } }
  static class ReportTask implements Task { public void run(){ System.out.println("Generate report"); } }
  static class CleanupTask implements Task { public void run(){ System.out.println("Clean temp files"); } }

  public static void main(String[] args) {
    Task[] queue = { new EmailTask(), new ReportTask(), new CleanupTask() };
    for (int i = 0; i < queue.length; i = i + 1) {
      queue[i].run(); // same call, different behavior
    }
  }
}

Проверка понимания интерфейсов

Быстрая проверка: почему полезно «программировать через интерфейс»?

Повторение

Повторение: использование типа интерфейса для параметров, возвращаемых значений и коллекций делает код гибким. Вы можете заменять реализации и быстро проверять код с помощью имитационных объектов.

Часто задаваемые вопросы

Урок «Интерфейсы на практике» бесплатный?

Да — полный текст урока «Интерфейсы на практике» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Java Academy, подпишись на CoddyKit PRO. Курс Java Academy содержит 3 уроков всего.

Чему я научусь в уроке «Интерфейсы на практике»?

Используйте интерфейсы как типы, передавайте их в методы и легко заменяйте реализации. Практикуйтесь в небольших шаблонах гибкого кода. Ты практикуешь Java Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Java Academy?

Предыдущий опыт не требуется. Java Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 3.

Сколько времени занимает урок «Интерфейсы на практике»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Java Academy?

Да. Каждый урок Java Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Интерфейсы на практике
  2. Основы обобщений (T, вывод типов)
  3. Обобщённые методы и классы
← Назад к Java Academy