ООП (Объектно-ориентированное программирование) – это парадигма программирования, которая основана на концепции объектов, содержащих данные и методы для работы с этими данными. Java является объектно-ориентированным языком и поддерживает все основные принципы ООП.
Рассмотрим подробнее каждый из принципов ООП в Java:
Абстракция
Абстракция – это процесс выделения существенных характеристик объекта, отвлекаясь от несущественных деталей. В Java абстракция достигается с помощью интерфейсов и абстрактных классов.
Пример интерфейса:
interface Drawable {
void draw();
}
class Circle implements Drawable {
public void draw() {
System.out.println("Drawing a circle");
}
}
Пример абстрактного класса:
abstract class Shape {
abstract double getArea();
}
class Rectangle extends Shape {
double width, height;
public double getArea() {
return width * height;
}
}
Инкапсуляция
Инкапсуляция – это механизм, который объединяет данные и методы, работающие с этими данными, в единый объект и скрывает детали реализации от пользователя. Инкапсуляция достигается с помощью модификаторов доступа (private, protected, public).
Пример инкапсуляции:
public class BankAccount {
private double balance;
public double getBalance() {
return balance;
}
public void deposit(double amount) {
balance += amount;
}
public void withdraw(double amount) {
if (amount <= balance) {
balance -= amount;
}
}
}
Наследование
Наследование – это механизм, позволяющий создавать новые классы на основе существующих. Класс, от которого производится наследование, называется суперклассом (родительским), а класс, который наследует, называется подклассом (дочерним). Подкласс наследует все поля и методы суперкласса и может добавлять свои собственные.
Пример наследования:
class Animal {
void eat() {
System.out.println("Animal is eating");
}
}
class Dog extends Animal {
void bark() {
System.out.println("Dog is barking");
}
}
class Bulldog extends Dog {
void sleep() {
System.out.println("Bulldog is sleeping");
}
}
Полиморфизм
Полиморфизм – это способность объекта принимать множество форм. В Java полиморфизм реализуется с помощью перегрузки методов (методы с одинаковым названием, но разными параметрами) и переопределения методов (изменение реализации метода в подклассе).
Пример перегрузки методов:
class Calculator {
int add(int a, int b) {
return a + b;
}
double add(double a, double b) {
return a + b;
}
}
Пример переопределения методов:
class Animal {
void makeSound() {
System.out.println("Animal makes a sound");
}
}
class Cat extends Animal {
@Override
void makeSound() {
System.out.println("Meow");
}
}
class Dog extends Animal {
@Override
void makeSound() {
System.out.println("Woof");
}
}
Применение принципов ООП в Java позволяет создавать модульный, расширяемый и легко поддерживаемый код. Объектно-ориентированный подход помогает организовать код в виде взаимодействующих объектов, что делает программы более структурированными и понятными.