abstract
Помечает класс, объект которого создать нельзя, и метод без тела, который реализуют наследники.
Доступно с: Java 1.0
Синтаксис
abstract class Name { abstract Type method(); }Примеры
Общая логика в абстрактном классе, детали — в наследниках:
abstract class Employee {
String name;
Employee(String name) {
this.name = name;
}
abstract double salary();
String payslip() {
return name + ": " + salary();
}
}
class Manager extends Employee {
Manager(String name) { super(name); }
double salary() { return 5000; }
}
void main() {
Employee e = new Manager("Anna");
IO.println(e.payslip());
// new Employee("Oleg"); // error: Main.Employee is abstract; cannot be instantiated
}Результат:
Anna: 5000.0Примечания
Абстрактный класс может иметь поля, конструкторы и обычные методы, интерфейс — нет (кроме констант). Если наследник не реализует все абстрактные методы, он тоже должен быть abstract.
См. также
В учебнике
- Абстрактные классы — Абстрактные классы и методы в Java: ключевое слово abstract, общий код для подклассов и запрет на создание объектов.