ООП простыми словами: классы, объекты и 4 принципа на примерах Java

ООП часто объясняют через определения, которые хочется перечитать трижды. Попробуем иначе — через кофейню. В ней есть напитки, бариста и касса, и каждый знает свою работу. Примерно так устроены и программы на Java.
Редакция Бинариума
Пишем о профессиях в дизайне, BIM и IT · 8 минут чтения
Из этой статьи вы узнаете:
Класс и объект
Класс — это чертёж, объект — вещь, сделанная по этому чертежу. Класс «Кофе» описывает, что у любого кофе есть название и объём. Объект — конкретная чашка капучино на 300 мл.
class Coffee {
String name;
int volume;
}
Coffee cup = new Coffee();
cup.name = "Капучино";
cup.volume = 300;Инкапсуляция
Посетитель не лезет в кофемашину — он нажимает кнопку. Так же и в коде: данные объекта скрыты, а работать с ними можно только через методы, которые проверяют правильность.
class Coffee {
private int volume;
public void setVolume(int v) {
if (v <= 0) throw new IllegalArgumentException("Объём должен быть больше нуля");
volume = v;
}
}Наследование
Латте и американо — это всё кофе, у них общие свойства. Наследование позволяет описать общее один раз, а в наследниках добавить особенности.
class Latte extends Coffee {
int milk;
}Курс Бинариума
Java-разработчик с нуля — ООП на практических задачах
Полиморфизм
Бариста получает заказ «приготовь напиток» — и готовит его по-разному в зависимости от того, что заказано. В коде один и тот же метод работает по-разному у разных классов.
interface Drink { void prepare(); }
class Tea implements Drink {
public void prepare() { System.out.println("Завариваем чай"); }
}
class Espresso implements Drink {
public void prepare() { System.out.println("Варим эспрессо"); }
}Абстракция
Кассиру не нужно знать, как устроена кофемашина, — ему нужен список напитков и цены. Абстракция означает, что мы описываем только важное для задачи и скрываем детали.
| Принцип | Суть одной фразой |
|---|---|
| Инкапсуляция | Скрываем данные, даём безопасные способы работы с ними |
| Наследование | Описываем общее один раз и переиспользуем |
| Полиморфизм | Один интерфейс — разное поведение |
| Абстракция | Показываем только важное для задачи |
Главное
- Класс — чертёж, объект — экземпляр по чертежу.
- Инкапсуляция защищает данные от некорректных изменений.
- Наследование и интерфейсы убирают дублирование кода.
- Полиморфизм позволяет работать с разными объектами одинаково.
Частые вопросы
Почему ООП так важно в Java?
Java изначально объектно-ориентированный язык: почти весь код в ней — это классы и объекты.
Как быстрее понять ООП?
Моделировать знакомые системы: магазин, библиотеку, банк. Через практику принципы становятся очевидными.
Курс Бинариума
Java-разработчик с нуля
ООП, коллекции, исключения и тесты — на практике.
- 11 недель обучения
- 10+ практических работ
- Проект в портфолио на GitHub