Короткий ответ
ООП — объектно-ориентированное программирование: методология, в которой программа строится как совокупность взаимодействующих объектов. Каждый объект — экземпляр класса — объединяет состояние (поля) и поведение (методы). В Java выделяют четыре принципа: инкапсуляцию, наследование, полиморфизм и абстракцию.
Как это работает подробнее
Принципы связаны между собой: инкапсуляция прячет данные, наследование выстраивает иерархии, полиморфизм позволяет единому коду работать с разными типами, абстракция отделяет «что делать» от «как».
- Инкапсуляция. Сокрытие внутреннего устройства объекта: поля делают
private, а доступ к ним дают через публичные геттеры и сеттеры. Это защищает данные от некорректного изменения. - Наследование. Новый класс создаётся на основе существующего через
extends: наследник получает поля и методы родителя и может расширять или переопределять их. Например,Catнаследуется отAnimal. - Полиморфизм. Одноимённые методы ведут себя по-разному: вызов
animal.voice()дляDogдаст «Гав», а дляCat— «Мяу»; конкретная реализация выбирается на этапе выполнения. - Абстракция. Выделение существенных характеристик объекта и игнорирование несущественных. На практике выражается в абстрактных классах и интерфейсах, описывающих «что делать» без уточнения «как».
Пример кода
AnimalDemo.java
abstract class Animal {
private String name; // инкапсуляция
Animal(String name) {
this.name = name;
}
public String getName() {
return name;
}
abstract void voice(); // абстракция
}
class Dog extends Animal { // наследование
Dog(String name) {
super(name);
}
@Override
void voice() { // полиморфизм
System.out.println("Гав");
}
}
class Cat extends Animal {
Cat(String name) {
super(name);
}
@Override
void voice() {
System.out.println("Мяу");
}
}
public class AnimalDemo {
public static void main(String[] args) {
Animal a = new Dog("Бобик");
a.voice(); // выведет «Гав»
}
}