Интерфейсы (введение и сравнение)
Определяйте интерфейсы, реализуйте их в классах и сравнивайте их с абстрактными классами. Изучите методы по умолчанию и множественную реализацию.
«Интерфейсы (введение и сравнение)» — бесплатный урок Java Academy на CoddyKit. Это урок 2 из 3. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Java Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Java Academy содержит 3 уроков всего.
Что такое интерфейс?
Интерфейс — это контракт, перечисляющий сигнатуры методов, которые класс обязан предоставить. Используйте его для описания возможности, например Drivable или Printable, не фиксируя иерархию классов.
Код: реализация интерфейса
Классы реализуют интерфейсы, обещая определённое поведение. На объект можно ссылаться через тип его интерфейса и вызывать объявленные методы.
public class Main {
// Interface that declares a capability
static interface Drivable {
void drive(); // method to implement
}
// A class implements the interface
static class Car implements Drivable {
public void drive() {
System.out.println("Car is driving");
}
}
public static void main(String[] args) {
Drivable d = new Car(); // upcast to interface
d.drive(); // runs Car's method
}
}
Интерфейсы и классы abstract
Класс abstract — отношение «является» с общим кодом. Интерфейс — возможность «умеет». Класс может расширять один класс, но реализовывать множество интерфейсов, что сохраняет гибкость проектирования и не допускает чрезмерно глубоких иерархий.
Код: метод по умолчанию
Интерфейсы могут содержать методы по умолчанию с кодом. Классы, реализующие интерфейс, автоматически наследуют это небольшое поведение.
public class Main {
// Interface with a default method (has a body)
static interface Greeter {
void greet(String name);
default void sayBye() { // default provides a reusable tiny implementation
System.out.println("Bye");
}
}
static class SimpleGreeter implements Greeter {
public void greet(String name) {
System.out.println("Hello, " + name);
}
}
public static void main(String[] args) {
Greeter g = new SimpleGreeter();
g.greet("Ada");
g.sayBye(); // default method from the interface
}
}
Несколько интерфейсов
Класс может одновременно реализовывать несколько интерфейсов, например Drivable и Maintainable. Это позволяет моделировать возможности, не навязывая фиксированную цепочку базовых классов.
Код: несколько интерфейсов
Один класс реализует оба интерфейса. В зависимости от контекста с ним можно работать как с Drivable, Maintainable или с его конкретным типом.
public class Main {
static interface Drivable { void drive(); }
static interface Maintainable { void maintain(); }
static class ServiceCar implements Drivable, Maintainable {
public void drive() { System.out.println("ServiceCar driving"); }
public void maintain() { System.out.println("ServiceCar maintenance"); }
}
public static void main(String[] args) {
ServiceCar s = new ServiceCar();
s.drive();
s.maintain();
}
}
Проверка интерфейсов
Быстрая проверка: какое утверждение об интерфейсах в Java верно?
Итоги
Итоги: интерфейсы определяют контракты поведения, а классы их реализуют. Используйте методы по умолчанию для небольших общих фрагментов кода и при необходимости объединяйте несколько возможностей в одном классе.
Часто задаваемые вопросы
Урок «Интерфейсы (введение и сравнение)» бесплатный?
Да — полный текст урока «Интерфейсы (введение и сравнение)» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Java Academy, подпишись на CoddyKit PRO. Курс Java Academy содержит 3 уроков всего.
Чему я научусь в уроке «Интерфейсы (введение и сравнение)»?
Определяйте интерфейсы, реализуйте их в классах и сравнивайте их с абстрактными классами. Изучите методы по умолчанию и множественную реализацию. Ты практикуешь Java Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Java Academy?
Предыдущий опыт не требуется. Java Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 3.
Сколько времени занимает урок «Интерфейсы (введение и сравнение)»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Java Academy?
Да. Каждый урок Java Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Абстрактные классы
- Интерфейсы (введение и сравнение)
- Восходящее и нисходящее приведение и instanceof