Назад к вопросам
Junior
91
questionbank
Какие принципы объектно-ориентированного программирования ты знаешь?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Инкапсуляция, наследование, полиморфизм.
-
Инкапсуляция: Объединение данных (атрибутов) и методов, работающих с этими данными, в единую сущность — объект. Скрытие внутренней реализации объекта от внешней среды.
class Car: def __init__(self, make, model): self._make = make # Защищенный атрибут self._model = model # Защищенный атрибут def get_description(self): # Метод предоставляет доступ к данным return f"Марка: {self._make}, Модель: {self._model}" # Внешний код взаимодействует через методы my_car = Car("Toyota", "Camry") print(my_car.get_description()) -
Наследование: Возможность создавать новые классы (наследники), которые наследуют атрибуты и методы существующих классов (родителей).
class Animal: def speak(self): pass # Базовый метод class Dog(Animal): def speak(self): return "Гав!" # Переопределение метода class Cat(Animal): def speak(self): return "Мяу!" # Переопределение метода # Использование унаследованных и переопределенных методов my_dog = Dog() my_cat = Cat() print(my_dog.speak()) print(my_cat.speak()) -
Полиморфизм: Возможность объектов разных классов реагировать на одно и то же сообщение (вызов метода) по-разному.
class Shape: def area(self): pass # Базовый метод для вычисления площади class Rectangle(Shape): def __init__(self, width, height): self.width = width self.height = height def area(self): return self.width * self.height # Реализация для прямоугольника class Circle(Shape): def __init__(self, radius): self.radius = radius def area(self): import math return math.pi * self.radius**2 # Реализация для круга # Объекты разных классов, вызывающие один и тот же метод "area" rectangle = Rectangle(5, 10) circle = Circle(7) shapes = [rectangle, circle] # Поведение метода "area" зависит от типа объекта for shape in shapes: print(f"Площадь: {shape.area()}")