A herança é um conceito importante na programação orientada a objetos. Em Python, é possível criar classes que herdam atributos e métodos de outras classes.
Para criar uma classe que herda de outra classe em Python, usamos a seguinte sintaxe:
class ChildClass(ParentClass):
A classe filha, ChildClass, herda todos os atributos e métodos da classe pai, ParentClass. Podemos adicionar novos atributos e métodos à classe filha, assim como sobrescrever atributos e métodos da classe pai.
Por exemplo, vamos criar uma classe Animal e uma classe Dog que herda de Animal:
class Animal:
def __init__(self, name):
self.name = name
def speak(self):
pass
class Dog(Animal):
def speak(self):
return "woof"
A classe Animal possui um construtor que recebe um parâmetro name e um método speak que não faz nada. A classe Dog herda de Animal e sobrescreve o método speak para retornar "woof".
Podemos criar um objeto Dog e chamar o método speak:
my_dog = Dog("Rex")
print(my_dog.speak()) # Output: "woof"
A saída será "woof".
Em resumo, a herança é uma técnica poderosa na programação orientada a objetos que permite reutilizar código e criar hierarquias de classes. Em Python, podemos criar classes que herdam atributos e métodos de outras classes usando a sintaxe class ChildClass(ParentClass):.
Existem dois tipos principais de herança em Python: herança simples e herança múltipla.
Na herança simples, uma classe filha herda atributos e métodos de uma única classe pai. A sintaxe para herança simples é a mesma que vimos anteriormente:
class ChildClass(ParentClass):
Na herança múltipla, uma classe filha herda atributos e métodos de duas ou mais classes pai. A sintaxe para herança múltipla é semelhante à herança simples, mas com várias classes pai separadas por vírgulas:
class ChildClass(ParentClass1, ParentClass2, ...):
Quando uma classe filha herda atributos ou métodos de várias classes pai, pode ocorrer conflito de nomes. Por exemplo, se as classes pai ParentClass1 e ParentClass2 tiverem um atributo ou método com o mesmo nome, a classe filha ChildClass precisará especificar de qual classe pai ela está herdando o atributo ou método.