← Назад к вопросам

Приведи пример абстракции

1.0 Junior🔥 201 комментариев
#ООП#Основы Java

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

# Абстракция в Java

Абстракция — это механизм скрытия деталей реализации и предоставления интерфейса для взаимодействия. В Java абстракция реализуется через абстрактные классы и интерфейсы.

Пример 1: Абстрактный класс

public abstract class Animal {
    public abstract void makeSound();
    public abstract void eat();
    
    public void sleep() {
        System.out.println("ZZZ...");
    }
}

public class Dog extends Animal {
    @Override
    public void makeSound() {
        System.out.println("Woof!");
    }
    
    @Override
    public void eat() {
        System.out.println("Eating meat");
    }
}

public class Cat extends Animal {
    @Override
    public void makeSound() {
        System.out.println("Meow!");
    }
    
    @Override
    public void eat() {
        System.out.println("Eating fish");
    }
}

Пример 2: Интерфейс

public interface PaymentMethod {
    void pay(double amount);
    void refund(double amount);
}

public class CreditCard implements PaymentMethod {
    @Override
    public void pay(double amount) {
        System.out.println("Paying " + amount + " via Credit Card");
    }
    
    @Override
    public void refund(double amount) {
        System.out.println("Refunding " + amount + " to Credit Card");
    }
}

public class PayPal implements PaymentMethod {
    @Override
    public void pay(double amount) {
        System.out.println("Paying " + amount + " via PayPal");
    }
    
    @Override
    public void refund(double amount) {
        System.out.println("Refunding " + amount + " to PayPal");
    }
}

public class ShoppingCart {
    private PaymentMethod paymentMethod;
    
    public ShoppingCart(PaymentMethod method) {
        this.paymentMethod = method;
    }
    
    public void checkout(double total) {
        paymentMethod.pay(total);
    }
}

Преимущества абстракции

  1. Скрытие деталей — клиент не знает внутреннюю реализацию
  2. Гибкость — легко добавлять новые реализации без изменения клиентского кода
  3. Переиспользуемость — один интерфейс может использоваться для разных реализаций
  4. Поддерживаемость — изменения во внутренней реализации не влияют на клиентов
Приведи пример абстракции | PrepBro