Абстракция в Java: упрощение кода и повышение читаемости
Абстракция — скрытие деталей реализации, предоставление только функциональности. Пользователь знает что делает объект, но не как. В Java достигается через абстрактные классы и интерфейсы.
Абстрактный класс
Класс с ключевым словом abstract.
- Может содержать абстрактные методы (без тела) и конкретные.
- Если есть хотя бы один абстрактный метод — класс обязан быть abstract.
- Нельзя создать экземпляр абстрактного класса.
- Для использования нужно унаследовать и реализовать все абстрактные методы.
Пример: абстрактный класс Employee
public abstract class Employee {
private String name, address; private int number;
public Employee(String name, String address, int number) { ... }
public double computePay() { System.out.println("Inside Employee computePay"); return 0.0; }
public void mailCheck() { System.out.println("Mailing check to " + name); }
// геттеры/сеттеры...
}
Попытка инстанцирования вызывает ошибку компиляции: Employee is abstract; cannot be instantiated.
Наследование абстрактного класса
public class Salary extends Employee {
private double salary;
public Salary(String name, String address, int number, double salary) { ... }
@Override
public void mailCheck() { ... }
@Override
public double computePay() { return salary / 52; }
}
Можно создавать экземпляры Salary и использовать поля/методы Employee.
Абстрактные методы
- Объявляются с
abstractперед типом возврата. - Нет тела, заканчиваются точкой с запятой:
public abstract double computePay(); - Класс, содержащий абстрактный метод, должен быть abstract.
- Подкласс обязан переопределить или тоже быть abstract.
Важно: в конечном итоге какой-то потомок должен реализовать метод, иначе цепочка абстрактных классов не будет инстанцируемой.
Пример реализации
public class Salary extends Employee {
private double salary;
@Override
public double computePay() {
System.out.println("Computing salary pay for " + getName());
return salary / 52;
}
}
java
- Ключевое слово final в Java: переменные, методы и классы
- Оператор instanceof в Java: полное руководство с примерами
- Абстрактные классы и методы в Java: полное руководство
- Статические вложенные классы в Java: использование, отличия и примеры
- Анонимные внутренние классы в Java: определение, синтаксис и практические примеры
- Паттерн Singleton в Java: как реализовать и безопасно использовать
- Рефлексия в Java: инспекция классов, методов и полей во время выполнения
- Освоение Java ObjectOutputStream: сериализация, методы и практические примеры
- Освоение Java Generics: создание переиспользуемого, типобезопасного кода
- Мастерство файловых операций в Java с java.io: создание, чтение, запись и удаление