0Pricing
Java Academy · Урок

Абстрактные классы

Объявляйте абстрактные классы и методы, понимайте, почему их нельзя создавать напрямую, и смотрите, как подклассы дополняют проектирование.

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

Что такое класс abstract?

Класс abstract: определяет общую идею и может оставлять некоторые методы без тела. Он также может включать обычные методы с кодом. Представьте шаблон, который требует от подклассов заполнить пропуски.

Код: невозможно создать экземпляр

Классы abstract нельзя напрямую создать как экземпляр. При этом они могут содержать обычные методы, которые наследуют все подклассы.

public class Main {
  // Abstract class with one abstract method and one concrete method
  static abstract class Animal {
    abstract void speak();              // must be implemented by subclasses
    void info() {                       // concrete method allowed
      System.out.println("I am an animal.");
    }
  }

  public static void main(String[] args) {
    // Animal a = new Animal(); // Uncommenting would not compile: cannot instantiate abstract class
    System.out.println("You cannot create an Animal directly if it is abstract.");
  }
}

Зачем нужны классы abstract?

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

Код: реализация метода abstract

Подклассы должны реализовать методы abstract. Конкретные методы из класса abstract наследуются и могут использоваться повторно.

public class Main {
  static abstract class Animal {
    abstract void speak();
    void info() {
      System.out.println("I am an animal.");
    }
  }

  static class Dog extends Animal {
    // Must implement speak()
    void speak() {
      System.out.println("Woof!");
    }
  }

  public static void main(String[] args) {
    Dog d = new Dog();      // allowed: Dog is concrete
    d.info();               // inherited concrete method
    d.speak();              // Dog's implementation
  }
}

Правила и сочетание возможностей

Правила: класс abstract может содержать поля, конструкторы и конкретные методы. Подкласс становится конкретным только после реализации всех методов abstract; иначе он тоже остаётся abstract.

Код: abstract и полиморфизм

Классы abstract хорошо сочетаются с полиморфизмом. Код может работать с типом abstract, а каждый подкласс предоставляет нужное поведение.

public class Main {
  static abstract class Animal {
    abstract void speak();
  }

  static class Dog extends Animal {
    void speak() { System.out.println("Woof!"); }
  }

  static class Cat extends Animal {
    void speak() { System.out.println("Meow!"); }
  }

  public static void main(String[] args) {
    // Polymorphism through abstract base type
    Animal[] pets = { new Dog(), new Cat() };
    for (int i = 0; i < pets.length; i = i + 1) {
      pets[i].speak(); // each subclass provides its own behavior
    }
  }
}

Проверка классов abstract

Быстрая проверка: какое утверждение о классах abstract верно?

Итоги

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

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

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

Да — полный текст урока «Абстрактные классы» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 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. Интерфейсы (введение и сравнение)
  3. Восходящее и нисходящее приведение и instanceof
← Назад к Java Academy