Ответ
В Java принципы ООП реализуются через конкретные языковые конструкции и ключевые слова:
1. Инкапсуляция (Encapsulation)
- Инструменты: Модификаторы доступа (
private,protected,public), геттеры/сеттеры. -
Цель: Скрыть внутреннее состояние объекта и контролировать доступ к данным.
public class BankAccount { // Поле скрыто (инкапсулировано) private double balance; // Контролируемый публичный интерфейс public void deposit(double amount) { if (amount > 0) { this.balance += amount; } } public double getBalance() { return balance; } // Нет публичного сеттера для balance, что защищает инвариант }
2. Наследование (Inheritance)
- Инструмент: Ключевое слово
extends. - Цель: Создавать иерархии классов, переиспользуя и расширяя функциональность.
class Vehicle { protected String brand; public void honk() { System.out.println("Beep!"); } } // Car наследует поля и методы Vehicle class Car extends Vehicle { private String model; public void setModel(String model) { this.model = model; } }
3. Полиморфизм (Polymorphism)
- Инструменты: Переопределение методов (
@Override), абстрактные классы (abstract), интерфейсы (interface), upcasting. - Цель: Использовать объекты разных классов через общий интерфейс.
interface Shape { double getArea(); // Абстрактный метод }
class Circle implements Shape { private double radius; @Override public double getArea() { return Math.PI radius radius; // Своя реализация } }
class Rectangle implements Shape { private double width, height; @Override public double getArea() { return width * height; // Другая реализация } }
// Полиморфное использование
List
**4. Абстракция (Abstraction)**
* **Инструменты:** Абстрактные классы (`abstract class`) и интерфейсы (`interface`).
* **Цель:** Скрыть сложную реализацию, показав только существенные характеристики.
```java
// Абстрактный класс задает общий каркас
abstract class DatabaseConnector {
abstract void connect(); // Абстрактный метод — реализация в подклассах
public void logConnection() { // Конкретный метод
System.out.println("Connection logged.");
}
}
// Интерфейс задает контракт
interface Logger {
void log(String message);
}
Дополнительные инструменты ООП в Java:
- Классы и объекты: Базовые строительные блоки (
class,new). - Конструкторы: Для инициализации состояния объекта.
- Ключевое слово
super: Для вызова конструктора или методов родительского класса. - Ключевое слово
final: Для запрета наследования (final class) или переопределения метода (final method).