Что такое абстракция в ООП? Приведите пример на Java.

«Что такое абстракция в ООП? Приведите пример на Java.» — вопрос из категории ООП, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Абстракция — это принцип ООП, который скрывает сложную реализацию и показывает только необходимые пользователю детали. Это достигается через абстрактные классы и интерфейсы.

Пример на Java:

// Абстрактный класс определяет общий контракт, скрывая детали реализации
abstract class Animal {
    // Абстрактный метод — реализация будет в подклассах
    abstract void makeSound();

    // Конкретный метод — общая реализация для всех животных
    void sleep() {
        System.out.println("Zzz");
    }
}

// Конкретный класс реализует абстрактный метод
class Dog extends Animal {
    @Override
    void makeSound() {
        System.out.println("Woof!");
    }
}

public class Main {
    public static void main(String[] args) {
        Animal myDog = new Dog();
        myDog.makeSound(); // Вывод: Woof!
        myDog.sleep();     // Вывод: Zzz
    }
}

Почему это абстракция:

  • Пользователь кода (Main) работает с объектом типа Animal.
  • Ему не нужно знать, как именно Dog издает звук — эта деталь скрыта.
  • Он знает только что может сделать (makeSound(), sleep()).