Sobes.tech
Назад к вопросам
Middle
1

Расскажите про принципы ООП: инкапсуляция, наследование, полиморфизм, абстракция

Компании, где спрашивали
Navio

Ответ от нейросети

sobes.tech AI

Принципы ООП:

  • Инкапсуляция — скрытие внутренней реализации объекта и предоставление доступа к данным через методы. Это защищает состояние объекта от некорректного изменения.

  • Наследование — механизм, позволяющий создавать новый класс на основе существующего, наследуя его свойства и методы, что способствует повторному использованию кода.

  • Полиморфизм — способность объектов разных классов реагировать на одинаковые сообщения (методы) по-разному. В Python это достигается через переопределение методов в подклассах.

  • Абстракция — выделение существенных характеристик объекта, скрывая детали реализации. В Python можно использовать абстрактные классы и методы из модуля abc.

Пример на Python:

from abc import ABC, abstractmethod

class Animal(ABC):
    @abstractmethod
    def sound(self):
        pass

class Dog(Animal):
    def sound(self):
        return "Woof"

class Cat(Animal):
    def sound(self):
        return "Meow"

# Использование
animals = [Dog(), Cat()]
for animal in animals:
    print(animal.sound())  # Полиморфизм

Здесь Animal — абстрактный класс (абстракция), Dog и Cat наследуют его, реализуя метод sound (наследование и полиморфизм). Инкапсуляция проявляется в том, что внутренние данные класса могут быть скрыты, а доступ к ним — через методы.