Herança
A herança é um dos princípios fundamentais da programação orientada a objetos, permitindo que você crie novas classes baseadas em classes existentes. Em Python, a herança é uma técnica poderosa que facilita a reutilização de código e a criação de hierarquias de classes. Neste tutorial, vamos explorar a herança em Python, incluindo como criar classes derivadas, sobrescrever métodos, acessar métodos da classe pai e entender a hierarquia de classes.
1. Criando uma Classe Base:
Vamos começar criando uma classe base que será usada como ponto de partida para nossas classes derivadas.
class Animal:
def __init__(self, nome):
self.nome = nome
def fazer_som(self):
pass
A classe Animal
possui um construtor que define o nome do animal e um método fazer_som
que será sobrescrito pelas classes derivadas.
2. Criando Classes Derivadas:
Agora, vamos criar classes derivadas que herdam da classe base Animal
.
class Cachorro(Animal):
def fazer_som(self):
return "Woof!"
class Gato(Animal):
def fazer_som(self):
return "Meow!"
As classes Cachorro
e Gato
são subclasses da classe Animal
e herdam seus atributos e métodos.
3. Sobrescrevendo Métodos:
Quando uma classe derivada tem um método com o mesmo nome que o método da classe base, o método da classe derivada sobrescreve o método da classe base.
cachorro = Cachorro("Buddy")
print(cachorro.fazer_som()) # Saída: Woof!
gato = Gato("Whiskers")
print(gato.fazer_som()) # Saída: Meow!
4. Acessando Métodos da Classe Pai:
Você pode acessar os métodos da classe pai usando a função super()
.
class AnimalComPeso(Animal):
def __init__(self, nome, peso):
super().__init__(nome)
self.peso = peso
def exibir_info(self):
print(f"{self.nome} pesa {self.peso} kg.")
gato_pesado = AnimalComPeso("Whiskers", 5)
gato_pesado.exibir_info() # Saída: Whiskers pesa 5 kg.
No exemplo acima, super().__init__(nome)
chama o construtor da classe pai para inicializar o atributo nome
.
5. Hierarquia de Classes:
Você pode criar hierarquias de classes com várias camadas de herança.
class Mamifero(Animal):
def __init__(self, nome, tipo_pelo):
super().__init__(nome)
self.tipo_pelo = tipo_pelo
class CachorroMamifero(Cachorro, Mamifero):
def __init__(self, nome, tipo_pelo):
Cachorro.__init__(self, nome)
Mamifero.__init__(self, nome, tipo_pelo)
Na classe CachorroMamifero
, a ordem das classes base na lista de herança (Cachorro, Mamifero
) determina a ordem em que os construtores das classes base são chamados.
A herança em Python é uma técnica poderosa para criar hierarquias de classes, promovendo a reutilização de código e a criação de classes especializadas a partir de classes existentes. Ao entender como criar classes derivadas, sobrescrever métodos, acessar métodos da classe pai e gerenciar hierarquias de classes, você terá um conhecimento sólido sobre herança em Python.