TGViewer
METANIT.COM METANIT.COM @devnull22 · 5.83K subscribers
Post #3472 1.74K
4 базовые концепции объектно-ориентированного программирования (ООП)
(продолжение предыдущего поста)

Четыре концепции - абстракция, инкапсуляция, наследование и полиморфизм формируют основу ООП и позволяют создавать гибкие, модульные и повторно используемые программы.

1. Абстракция (Abstraction)

Суть: абстракция — это процесс сокрытия деталей реализации и предоставления пользователю только функциональности. То есть мы фокусируемся на «что делается», а не на «как это делается».

На изображении:
- Приведён пример с классом Car (абстрактный класс), который содержит абстрактный метод stop().
- Конкретные реализации (Honda, Tesla, Ford) наследуют Car и предоставляют свою реализацию метода stop().
- Визуально показано, как общий интерфейс (Car) связан с конкретными реализациями (марки автомобилей).

Пример кода:
public abstract class Car {
public abstract void stop();
}

public class Honda extends Car {
@Override
public void stop() {
System.out.println("Honda::Stop");
System.out.println("Mechanism to stop the car using break");
}
}


2. Инкапсуляция (Encapsulation)

Суть: инкапсуляция — это объединение кода и данных в единый блок (класс), при этом каждый объект контролирует своё состояние. Это позволяет скрыть внутреннюю реализацию и предоставить доступ только через методы.

На изображении:
- Показана структура класса: переменные (Variables) и методы (Methods) объединены в класс (Class).
- Пример с классом Car, где переменная name объявлена private, а доступ к ней осуществляется через методы getName() (getter) и setName(String name) (setter).

Пример кода:
public class Car {
// private variable
private String name;

// getter method for name
public String getName() {
return name;
}

// setter method for name
public void setName(String name) {
this.name = name;
}
}


3. Наследование (Inheritance)

Суть: наследование позволяет одному классу (производному, дочернему) наследовать свойства и методы другого класса (базового, родительского). Отражает отношение «IS-A» («является»).

На изображении:
- Схема с классом Vehicle (базовый класс) и производными классами: Bike, Car, Bus, Truck.
- Пример кода показывает, как класс Car наследует поле brand от Vehicle и добавляет своё поле doors.
- Метод describe() переопределяется в классе Car для предоставления специфической реализации.

Пример кода:
class Vehicle {
protected String brand;

// Constructor
public Vehicle(String brand) {
this.brand = brand;
}

// Method to be overridden
public String describe() {
return "This is a vehicle of brand: " + brand;
}
}

class Car extends Vehicle {
private int doors;

// Constructor
public Car(String brand, int doors) {
super(brand);
this.doors = doors;
}

// Override the describe method
@Override
public String describe() {
return "This is a car of brand: " + brand + " with " + doors + " doors.";
}
}


4. Полиморфизм (Polymorphism)

Суть: полиморфизм — это способность объектов выполнять одни и те же действия разными способами. Объекты разных классов могут использоваться взаимозаменяемо, если они наследуют общий интерфейс.

На изображении:
- Разделяется на два типа: полиморфизм на этапе компиляции (Compile Time Polymorphism) и полиморфизм на этапе выполнения (Run Time Polymorphism).
- Compile Time Polymorphism включает перегрузку операторов (Operator Overloading) и перегрузку функций (Function Overloading).
- Run Time Polymorphism реализуется через виртуальные функции (Virtual Function) и переопределение методов.
- Пример: класс Vehicle с методом start(), который переопределяется в классе Car. Объект Car может быть присвоен ссылке типа Vehicle, и при вызове start() будет выполняться реализация из Car.
  • ❤ 9
  • 💋 3
  • 🔥 2
  • 🙏 2
  • 👏 1
More from @devnull22
  1. Mar 19, 2026Добавил в руководство по JavaScript главу про работу с датами и временем с помощью Tempora…
  2. Mar 19, 2026Роскомнадзор перестал полностью справляться с блокировками в интернете Роскомнадзор (РКН)…
  3. Mar 18, 2026Минцифры опубликовало законопроект о государственном регулировании ИИ. Закон должен начать…
  4. Mar 18, 2026Microsoft призвала разработчиков создавать ИИ-приложения в Electron на Windows 11 Microsof…
  5. Mar 18, 2026Oracle анонсировала проект Detroit, который будет развиваться в составе OpenJDK и нацелен…
  6. Mar 17, 2026Вышла новая версия платформы Java - JDK 26. JDK 26 — краткосрочная версия с поддержкой Pre…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →