Комментарии (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);
}
}
Преимущества абстракции
- Скрытие деталей — клиент не знает внутреннюю реализацию
- Гибкость — легко добавлять новые реализации без изменения клиентского кода
- Переиспользуемость — один интерфейс может использоваться для разных реализаций
- Поддерживаемость — изменения во внутренней реализации не влияют на клиентов