Наследование и полиморфизм


Наследование и полиморфизм

Изучение наследования и полиморфизма в Python.

Наследование и полиморфизм

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

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

Наследование позволяет дочернему классу использовать атрибуты и методы родительского класса. Это помогает избежать дублирования кода.

class Animal:
    def speak(self):
        print("Животное издает звук")

class Dog(Animal):
    def bark(self):
        print("Собака лает")

my_dog = Dog()
my_dog.speak()  # Выведет: Животное издает звук
my_dog.bark()   # Выведет: Собака лает

Переопределение методов

Дочерний класс может переопределить методы родительского класса, чтобы изменить их поведение.

class Cat(Animal):
    def speak(self):
        print("Кошка мяукает")

my_cat = Cat()
my_cat.speak()  # Выведет: Кошка мяукает

Полиморфизм

Полиморфизм позволяет использовать объекты разных классов через единый интерфейс. Например, можно создать список животных и вызвать метод speak для каждого из них.

animals = [Dog(), Cat()]
for animal in animals:
    animal.speak()
# Выведет:
# Животное издает звук
# Кошка мяукает

Множественное наследование

Python поддерживает множественное наследование, когда класс может наследовать от нескольких родительских классов.

class Bird:
    def fly(self):
        print("Птица летит")

class Parrot(Bird, Animal):
    def speak(self):
        print("Попугай говорит")

my_parrot = Parrot()
my_parrot.speak()  # Выведет: Попугай говорит
my_parrot.fly()    # Выведет: Птица летит

Заключение

Теперь вы знаете, как использовать наследование и полиморфизм в Python. Попробуйте создать свои классы с наследованием и переопределением методов. В следующем занятии мы изучим работу с библиотеками.

Практика

🎯 Миссия 13: Организовать транспортный парк
🔍 Контекст: От велосипеда до Tesla — всё в одном гараже!

⚙️ Техзадание:
1. Базовый класс Vehicle с name и max_speed
2. Класс Car (добавьте num_doors)
3. Класс Bicycle (добавьте has_bell)
4. Полиморфизм: создайте список и вызовите display_info()

Автомобиль: дверей - 4
Велосипед: звонок - есть

💡 Подсказка: for vehicle in vehicles: vehicle.display_info()

Попробуйте на практике:

Результат:


                

Вопросы для закрепления

Вопросы для проверки усвоенного материала доступны зарегистрированным пользователям.

К следующему уроку