A herança e o polimorfismo são dois conceitos fundamentais na programação orientada a objetos (OOP). Estes conceitos são usados para criar programas mais eficientes e reutilizáveis.
18.1.1 Herança
A herança é um mecanismo que permite que uma classe adquira as propriedades e métodos de outra classe. A classe que doa as propriedades e métodos é conhecida como classe base ou classe pai, enquanto a classe que recebe as propriedades e métodos é conhecida como classe derivada ou classe filha.
Por exemplo, imagine que temos uma classe 'Animal' com propriedades como 'nome', 'idade' e métodos como 'comer' e 'dormir'. Agora, queremos criar uma nova classe 'Cão' que possui todas as propriedades e métodos da classe 'Animal', mas também tem algumas propriedades e métodos adicionais, como 'raça' e 'latir'. Em vez de reescrever todas as propriedades e métodos da classe 'Animal' na classe 'Cão', podemos simplesmente fazer a classe 'Cão' herdar da classe 'Animal'. Isso é feito através da palavra-chave 'extends' em muitas linguagens de programação.
A herança permite que os programadores criem classes que são construídas sobre classes existentes. Isso permite que os programadores reutilizem o código existente, o que torna o desenvolvimento de software mais rápido e mais eficiente.
18.1.2 Polimorfismo
Polimorfismo é um conceito que permite que objetos de diferentes classes sejam tratados como objetos de uma classe comum. Isso é especialmente útil quando se trabalha com herança.
Por exemplo, suponha que temos uma classe 'Animal' com um método 'falar'. Agora, temos várias classes derivadas, como 'Cão', 'Gato' e 'Pássaro', cada uma com sua própria implementação do método 'falar'. Se tivermos um array de objetos 'Animal', podemos chamar o método 'falar' em cada objeto sem saber a classe específica do objeto. Isso é polimorfismo.
O polimorfismo permite que os programadores escrevam programas que processam objetos de classes que compartilham a mesma superclasse de maneiras que dependem do tipo de objeto específico que está sendo processado. Isso pode tornar os programas mais flexíveis e extensíveis.
18.1.3 Herança e Polimorfismo na Prática
Na prática, a herança e o polimorfismo são usados para criar programas que são fáceis de entender, manter e estender. Eles permitem que os programadores criem estruturas de classes que refletem a estrutura do problema que estão tentando resolver.
Por exemplo, suponha que estamos criando um programa para um zoológico. Podemos ter uma classe 'Animal' com propriedades e métodos comuns a todos os animais. Em seguida, podemos ter classes derivadas para cada tipo de animal, como 'Leão', 'Elefante' e 'Pinguim', cada uma com suas próprias propriedades e métodos específicos. Isso torna o programa fácil de entender, porque a estrutura do código reflete a estrutura do zoológico.
Além disso, se quisermos adicionar um novo tipo de animal ao programa, podemos simplesmente criar uma nova classe para ele que herda da classe 'Animal'. Isso torna o programa fácil de estender, porque não precisamos modificar o código existente para adicionar novas funcionalidades.
Por fim, se quisermos realizar uma ação em todos os animais do zoológico, podemos usar polimorfismo para tratar todos os animais como objetos da classe 'Animal'. Isso torna o programa fácil de manter, porque podemos fazer alterações em um só lugar e ter essas alterações refletidas em todo o programa.
Em resumo, a herança e o polimorfismo são ferramentas poderosas que os programadores podem usar para criar programas eficientes, reutilizáveis e manuteníveis.