Herança Simples
Herança simples ocorre quando uma classe herda os atributos e métodos de somente uma outra classe. Isto permite criar hierarquias de classes de maneira organizada e lógica. Em Python, a herança simples é facilmente implementada utilizando parênteses (()
) para especificar a classe base.
Exemplo:
class Animal:
def __init__(self, nome):
self.nome = nome
def comer(self):
return f"{self.nome} está a comer."
class Cao(Animal):
def latir(self):
return f"{self.nome} está a latir."
# Utilização das classes
meu_cao = Cao("Rex")
print(meu_cao.comer()) # Output: Rex está a comer.
print(meu_cao.latir()) # Output: Rex está a latir.
Neste exemplo, a classe Cao
herda a classe Animal
, obtendo assim o método comer
.
Herança Múltipla
Herança múltipla é o conceito onde uma classe pode herdar atributos e métodos de mais do que uma classe. Python permite herança múltipla, o que é bastante útil para combinar funcionalidades de diferentes classes numa nova classe.
Exemplo:
class Mamifero:
def __init__(self, tem_pelo=True):
self.tem_pelo = tem_pelo
def amamentar(self):
return "Amamentar os filhotes."
class Aquatico:
def __init__(self, tem_guelras=False):
self.tem_guelras = tem_guelras
def nadar(self):
return "Está a nadar."
class Lontra(Mamifero, Aquatico):
def __init__(self):
Mamifero.__init__(self)
Aquatico.__init__(self)
# Utilização da classe Lontra
lontra = Lontra()
print(lontra.amamentar()) # Output: Amamentar os filhotes.
print(lontra.nadar()) # Output: Está a nadar.
Neste exemplo, a classe Lontra
herda de Mamifero
e Aquatico
, combinando atributos e métodos de ambas as classes.
Considerações
Herança múltipla pode ser uma poderosa ferramenta, mas também pode introduzir complexidade adicional, tais como:
- Conflitos de Nome: Se duas classes base possuírem métodos ou atributos com o mesmo nome, pode causar confusão.
- Ordem de Resolução de Métodos (MRO): Python usa um algoritmo chamado MRO para determinar a ordem em que as classes são verificadas quando se pesquisa por um método.
Exemplo Avançado de Herança Múltipla
class A:
def fazer_algo(self):
return "Feito por A"
class B:
def fazer_algo(self):
return "Feito por B"
class C(A, B):
pass
obj = C()
print(obj.fazer_algo()) # Output: Feito por A
Neste caso, C
herda tanto A
como B
, mas A
é resolvido primeiro devido à ordem em que as classes são listadas na definição de C
.
Resumo
A herança é um princípio fundamental da Programação Orientada a Objetos, permitindo a utilização e extensão de código existente.
- Herança Simples é simples e direta, onde uma classe herda de uma única classe.
- Herança Múltipla possibilita a combinação de funcionalidades de múltiplas classes, mas requer atenção adicional para evitar conflitos e compreender a MRO.
Quiz
-
O que é herança simples?
- a. Quando uma classe herda de múltiplas classes
- b. Quando uma classe herda de uma única classe
- c. Quando uma classe não herda de nenhuma outra classe
-
Qual é o risco associado à herança múltipla?
- a. Melhoria de eficiência
- b. Conflitos de nome
- c. Memória insuficiente
-
No Python, como se especifica a ordem de herança em herança múltipla?
- a. Em qualquer ordem
- b. Em ordem alfabética
- c. Pela ordem em que as classes são listadas na definição