Herança: uma classe a partir de outra

Material complementar: leitura opcional após as aulas de atributos e métodos.

Objetivos da aula

  • Entender a ideia de herança com animais.
  • Aproveitar atributos e métodos de uma classe.
  • Observar uma mesma ação com resultados diferentes.

Por que isso importa?

Podemos aproveitar o que duas classes têm em comum e escrever separadamente o que cada uma faz de diferente.

O que é herança?

Herança permite criar uma classe que aproveita características de outra. Por exemplo, cachorro e gato são animais. Ambos podem ter um nome, mas fazem sons diferentes.

Vamos começar com uma classe Animal e criar uma classe Cachorro a partir dela.

Exemplo 1: aproveitando um método

  1. Animal define o atributo nome e o método apresentar().
  2. Os parênteses em class Cachorro(Animal) indicam que Cachorro herda de Animal.
  3. Como Cachorro não define outro __init__, ele usa o que foi definido em Animal.
  4. O cachorro pode usar apresentar() e também seu próprio método latir().

Exemplo 2: a mesma ação com resultados diferentes

Agora, vamos usar o nome emitir_som() para a ação de produzir um som. Cada classe terá sua versão desse método. Este exemplo é completo e pode ser executado em outro arquivo:

O nome do método é igual, mas o resultado depende do objeto. O cachorro late e o gato mia. Definir uma nova versão de um método herdado recebe o nome de sobrescrita.

Uma primeira ideia de polimorfismo

Usar a mesma ação com objetos que respondem de formas diferentes é uma ideia do polimorfismo. Podemos observar isso com uma lista de animais. Execute o trecho abaixo depois do exemplo anterior:

O laço chama emitir_som() uma vez para cada animal. A saída continua sendo:

Rex: Au au!
Mimi: Miau!

Resumo rápido

  • Uma classe pode herdar de outra.
  • A classe que herda pode acrescentar métodos ou criar novas versões de métodos herdados.
  • Objetos diferentes podem responder de formas diferentes à mesma ação.