каковы основы наследования в ооп какие типы существуют и какие примеры кода можно привести
Наследование — это один из ключевых принципов ООП, который позволяет создавать новые классы на основе существующих. Класс, от которого происходит наследование называется родительским или базовым классом. А класс, который наследует свойства и методы, называется дочерним или производным классом.
Пример наследования в Python:
class Animal:
def speak(self):
pass
class Dog(Animal):
def speak(self):
print("Woof!")
Полиморфизм еще один принцип ООП, который позволяет объектам с одинаковым интерфейсом использоваться с одинаковыми операциями без знания типа объекта. В динамических языках полиморфизм часто реализуется с помощью утиной типизации. Иначе говоря, если у класса есть такой метод, то он будет вызван, вне зависимости от типа класса.
class Bird:
def speak(self):
pass
class Parrot(Bird):
def speak(self):
print("Polly wants a cracker!")
class Crow(Bird):
def speak(self):
print("Caw caw!")
def make_bird_speak(bird):
bird.speak()
parrot = Parrot()
crow = Crow()
make_bird_speak(parrot) # => "Polly wants a cracker!"
make_bird_speak(crow) # => "Caw caw!"
Множественное наследование это возможность наследования от нескольких классов. В том же Python используется порядок разрешения методов MRO (Method Resolution Order), чтобы определить, какой метод вызывается при множественном наследовании.
class A:
def do_something(self):
print("Method of class A")
class B:
def do_something(self):
print("Method of class B")
class C(A, B):
pass
obj = C()
obj.do_something() # => "Method of class A"
В данном случае метод do_something()
наследуется от класса A
, так как он находится первым в списке родительских классов.
Обычно с множественным наследованием связана тема миксин, небольших классов, наследуясь от которых, можно расширять базовый класс.