Абстрактные классы
Объявляйте абстрактные классы и методы, понимайте, почему их нельзя создавать напрямую, и смотрите, как подклассы дополняют проектирование.
«Абстрактные классы» — бесплатный урок 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 — локальная установка не требуется.