Встречается на 50% собеседований по Java

Какие есть принципы ООП

Объектно-ориентированное программирование (ООП) — это парадигма программирования, основанная на четырех ключевых принципах: инкапсуляции, наследовании, полиморфизме и абстракции. Эти принципы обеспечивают гибкость, масштабируемость и повторное использование кода, делая его более чистым, понятным и надежным.

Инкапсуляция

Инкапсуляция — это сокрытие внутренних данных класса от внешнего мира и контроль доступа к ним через методы класса. Это защищает данные от непреднамеренного изменения и предоставляет четкий интерфейс взаимодействия с объектом. В Java инкапсуляция реализуется с помощью модификаторов доступа (private, protected, public) и методов-геттеров/сеттеров.

java
public class Account {
    private double balance; // Скрытие данных

    public void deposit(double amount) {
        if (amount > 0) {
            balance += amount;
        }
    }

    public double getBalance() {
        return balance;
    }
}

Наследование

Наследование позволяет создать новый класс на основе существующего, перенимая его свойства и методы. Это облегчает повторное использование кода и упрощает создание иерархических классификаций. В Java наследование реализуется с помощью ключевого слова extends.

java
public class Vehicle {
    private String brand;

    public void honk() {
        System.out.println("Туут, туут!");
    }
}

public class Car extends Vehicle {
    private int numberOfSeats;

    public void display() {
        System.out.println("Марка: " + brand + ", Количество сидений: " + numberOfSeats);
    }
}

Полиморфизм

Полиморфизм позволяет объектам с одинаковым интерфейсом иметь различную реализацию. Это означает, что одно и то же имя метода может использоваться для разных типов действий. В Java полиморфизм достигается через переопределение методов (@Override) и перегрузку методов.

java
public class Animal {
    public void sound() {
        System.out.println("Животное издает звук");
    }
}

public class Pig extends Animal {
    @Override
    public void sound() {
        System.out.println("Хрю");
    }
}

public class Dog extends Animal {
    @Override
    public void sound() {
        System.out.println("Гав");
    }
}

Абстракция

Абстракция означает выделение ключевых, наиболее значимых характеристик объекта, исключая из рассмотрения несущественные. Это позволяет сосредоточиться на том, что объект делает, а не на том, как он это делает. В Java абстракция реализуется через абстрактные классы и интерфейсы.

java
public abstract class Shape {
    abstract void draw();
}

public class Circle extends Shape {
    @Override
    void draw() {
        System.out.println("Рисуем круг");
    }
}

public class Square extends Shape {
    @Override
    void draw() {
        System.out.println("Рисуем квадрат");
    }
}

Коротко

  • Четыре принципа ООП: инкапсуляция, наследование, полиморфизм, абстракция.
  • Инкапсуляция скрывает данные и контролирует доступ через методы.
  • Наследование позволяет создавать иерархии классов и переиспользовать код.
  • Полиморфизм позволяет единообразно работать с объектами разных типов.
  • Абстракция выделяет существенные характеристики, скрывая детали реализации.
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы