Módulo 11 - Orientação a objetos: herança

O que é herança

10 min de leitura · por Cesar Gargiulo, revisado pela equipe ValorFinal e GuardiaSec · Atualizado em 01/07/2026

O que você vai aprender

  • Entender herança como a relação é-um entre uma classe base e uma filha.
  • Ver que a filha ganha atributos e métodos da base sem reescrever.
  • Reconhecer quando herança evita cópia de código.
  • Distinguir é-um (herança) de tem-um (composição), em visão geral.

A ideia do é-um

No módulo anterior você aprendeu a criar classes, que são moldes para objetos. Cada classe reunia dados (os atributos) e comportamentos (os métodos) de uma coisa. Só que, no mundo real, muitas coisas são variações de uma ideia mais geral. Um cachorro, um gato e um pássaro são todos animais: têm nome, têm idade, comem e dormem. Escrever três classes quase iguais, repetindo nome, idade e comer em cada uma, seria desperdício e fonte de erro. Herança resolve isso deixando você dizer, em código, que essas classes são tipos mais específicos de Animal.

A pergunta que decide se cabe herança é simples: consigo dizer que a filha é um tipo de base sem forçar a frase? Cachorro é um Animal soa natural, então Cachorro pode herdar de Animal. Já Cachorro é uma Coleira não soa; a coleira é algo que o cachorro tem, não algo que ele é. Essa segunda relação, o tem-um, resolve-se guardando um objeto dentro de outro, o que se chama composição, e você verá adiante. Por ora, o que interessa é reconhecer o é-um, porque é ele que justifica herdar.

Sem herança

  • Cada classe repete nome, idade e comer
  • Corrigir comer exige mexer em todas
  • Fácil esquecer uma e criar diferença silenciosa
  • Muito código quase igual lado a lado

Com herança

  • Animal define nome, idade e comer uma vez
  • Corrigir comer na base vale para todas
  • As filhas herdam o mesmo comportamento
  • Cada filha escreve só a sua diferença

De Animal a Cachorro

Vamos ao concreto. Primeiro uma classe base Animal, com o que todo animal tem: um nome e a capacidade de comer. Depois, uma classe Cachorro que herda de Animal. Repare que Cachorro não escreve nada sobre nome nem sobre comer; ele já recebe tudo isso da base. A única coisa nova é latir, que é o que diferencia um cachorro de um animal qualquer. A sintaxe da herança é o nome da base entre parênteses na definição da filha, e você a estuda em detalhe na próxima aula.

class Animal:
    def __init__(self, nome):
        self.nome = nome

    def comer(self):
        return f"{self.nome} está comendo."

class Cachorro(Animal):
    def latir(self):
        return f"{self.nome} faz au au!"

rex = Cachorro("Rex")
print(rex.comer())  # Rex está comendo.
print(rex.latir())  # Rex faz au au!

Cachorro herda nome e comer de Animal, e só acrescenta latir.

O objeto rex é um Cachorro, mas responde a comer, que veio de Animal, e a latir, que é próprio dele. Ele também tem o atributo nome, definido no construtor da base. Ou seja, criar Cachorro a partir de Animal deu, de graça, tudo o que Animal oferecia, e você só precisou digitar a diferença. Se amanhã Animal ganhar um método dormir, todo Cachorro passa a dormir também, sem tocar em Cachorro. É esse ganho automático que torna a herança tão útil quando a relação é-um existe de verdade.

Por que isso importa no intermediário

Herança é um dos pilares da orientação a objetos, ao lado de encapsulamento e polimorfismo, que esta mesma unidade cobre. No dia a dia, você encontra herança em toda parte, mesmo sem perceber. Ao criar uma tela em muitos frameworks, você herda de uma classe base de tela. Ao definir um erro próprio em Python, você herda de Exception. Entender a relação é-um ajuda a ler esse código dos outros e a organizar o seu, agrupando o que é comum em um lugar só e deixando cada caso específico enxuto.

Guarde a intenção antes da sintaxe. Herança existe para modelar que um conceito é um caso mais específico de outro e, com isso, reaproveitar comportamento. Quando a relação é-um está clara, o código fica mais curto, mais organizado e mais fácil de corrigir, porque o que é comum mora num lugar só. Nas próximas aulas você monta essa relação passo a passo: a sintaxe da classe filha, como estender o construtor com super, como redefinir um método e como o mesmo comando passa a tratar cada objeto do seu jeito.

Teste rápido

Qual relação justifica usar herança entre duas classes?

Perguntas frequentes

Qual a diferença entre classe base e classe filha?
A classe base é a mais geral, como Animal, e reúne o que é comum. A classe filha é o caso específico, como Cachorro, que herda tudo da base e acrescenta ou muda só a sua diferença. Base também é chamada de superclasse ou mãe; filha, de subclasse ou derivada.
Herança copia o código da base para a filha?
Não copia. A filha passa a ter acesso aos atributos e métodos da base, que continuam definidos num lugar só. Por isso, ao corrigir um método na base, a correção vale para todas as filhas automaticamente, sem você mexer em cada uma.
Quando não devo usar herança?
Quando a relação não é é-um. Se você diria a filha tem um base, e não a filha é um base, o caminho é composição: guardar um objeto dentro do outro. Herdar só porque duas classes têm campos parecidos costuma criar hierarquias confusas.
O que é a relação é-um, na prática?
É um teste de linguagem: se a frase a filha é um tipo de base soa natural, cabe herança. Cachorro é um Animal, Círculo é uma Forma, ErroDeSaldo é uma exceção. Se a frase soa forçada, provavelmente a relação é outra.
Uma classe filha pode ter métodos próprios?
Pode, e é o esperado. Ela herda tudo da base e ainda acrescenta o que a diferencia. No exemplo, Cachorro herdou comer de Animal e definiu latir, que é só dele. A filha pode ter quantos métodos e atributos novos precisar.
Herança é o mesmo que orientação a objetos?
Não. Orientação a objetos é o estilo maior, que junta classes, objetos, encapsulamento, herança e polimorfismo. Herança é um desses pilares: o mecanismo de reaproveitar uma classe base numa filha. Você viu classes no módulo anterior; aqui foca na herança.

Fontes

Seu progresso fica salvo neste aparelho. Assinantes sincronizam entre os aparelhos.