1. Baleias e vacas
Aqui está um fato zoológico interessante: uma vaca está muito mais próxima de uma baleia do que, por exemplo, de um hipopótamo. Acontece que vacas e baleias são parentes relativamente próximos.
Olhe aqui. Vamos falar sobre polimorfismo — outra ferramenta muito poderosa de OOP . Ele tem quatro recursos.
2. Herança não é uma panacéia
Imagine que você escreveu uma Cowclasse para um jogo. Tem muitos campos e métodos. Objetos desta classe podem fazer várias coisas: andar, comer e dormir. As vacas também usam um sino que toca quando elas andam. Suponha que você implementou tudo na classe nos mínimos detalhes.
E aí chega sua cliente e diz que quer lançar uma nova fase do jogo, em que toda a ação se passa no mar, e o personagem principal é uma baleia.
Você começa a projetar uma Whaleclasse e percebe que ela é apenas ligeiramente diferente da Cowclasse. A lógica das duas classes é muito parecida e você decide usar herança.
A Cowclasse é ideal para assumir o papel da classe pai: ela possui todas as variáveis e métodos necessários. Tudo o que precisamos fazer é dar à baleia a capacidade de nadar. Mas há um problema: sua baleia tem patas, chifres e um sino. Afinal, essa funcionalidade é implementada dentro da Cowclasse. O que pode ser feito aqui?
3. Sobreposição de método
A substituição de método vem em nosso socorro. Se herdamos um método que não faz exatamente o que queremos em nossa nova classe, podemos substituir esse método por outro.
Como isso é feito? Em nossa classe descendente, declaramos o mesmo método que o método da classe pai que desejamos substituir. Nós escrevemos nosso novo código nele. E é isso — é como se o antigo método na classe pai simplesmente não existisse.
É assim que funciona:
| Código | Descrição |
|---|---|
|
|
|
Este código exibe o seguinte texto na tela: |
|
Este código exibe o seguinte na tela: |
Depois de herdar a Cowclasse e substituir o printNamemétodo, a Whaleclasse contém os seguintes dados e métodos:
|
Não conhecemos nenhum método antigo. |
GO TO FULL VERSION