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
Animaldefine o atributonomee o métodoapresentar().- Os parênteses em
class Cachorro(Animal)indicam queCachorroherda deAnimal. - Como
Cachorronão define outro__init__, ele usa o que foi definido emAnimal. - O cachorro pode usar
apresentar()e também seu próprio métodolatir().
Cachorro(Animal) como “cachorro é um animal”.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.