Herança é um dos aspectos mais importantes da POO. Permite que uma classe herde membros de outras classes. Perceber como esta funcionalidade é inteligente sem um exemplo pode ser algo complicado de perceber.

Imaginem que precisam de representar vários tipos de animais. Podem criar uma classe Gato, uma classe Cão, etc., mas depressa se vão aperceber que estas classes partilham muitas funcionalidades. Por outro lado, podem existir situações específicas para cada animal. Para estes casos, a herança é uma boa solução. A ideia é criar uma classe base, neste caso chamada Animal, e de seguida criar classes filhas para cada animal específico necessário. Outra vantagem desta abordagem é que cada animal que vão ter virá com a mesma funcionalidade básica com a qual podem sempre contar.

Mais uma vez, tudo isto pode parecer muito teórico e inicialmente podem achar que tem pouca utilidade, mas à medida que criarem sites mais avançados, provavelmente vão encontrar situações em que a herança dará muito jeito. Vejamos o seguinte exemplo:

 

Uma classe muito simples, idêntica às que criámos em artigos anteriores. No entanto, “uma espécie de animal” não é muito elucidativo, por isso vamos criar uma classe filha para um cão:

 

O Cao é declarado como uma classe normal, mas após isso, usamos o termos “extends” para indicar ao PHP que a classe Cao deve herdar da classe Animal. Agora a nossa classe Cao tem exactamente as mesmas funcionalidades da classe Animal. Verifiquem ao experimentarem este código:

 

Irão ver que tanto o nome como a função Ola() ainda lá estão, mas ainda estão anónimas. Vamos alterar isso escrevendo uma versão específica da função Ola() para o nosso Cao:

 

Notem que declarámos outra vez a função Ola(), isto porque precisamos que faça outra coisa, mas a variável $nome não está declarada, porque já a temos declarada na classe Animal, o que está correcto. Como podem verificar, mesmo que a variável $nome não esteja declarada na classe Cao, podemos na mesma usá-la na função Ola() da classe Cao. Agora com as duas classes declaradas, vamos testá-las. O seguinte código trata do assunto:

 

Começámos por criar uma instância da classe Animal e de seguida chamar a função Ola(). O resultado será o “olá” genérico que escrevemos inicialmente. Depois, atribuímos uma nova instância da classe Cao à variável $animal, atribuímos um nome real ao nosso cão e chamámos mais uma vez a função Ola(). Desta vez, é usada a função específica Ola() do Cao, e temos como resultado um “olá” específico do nosso animal, porque agora é um cão.

A herança também funciona recursivamente. Podemos criar uma classe que herda da classe Cao, que por sua vez herda da classe Animal, por exemplo uma classe Cachorro. A classe Cachorro terá então variáveis e métodos quer da classe Cao quer da classe Animal.

Artigo anterior do tutorial PHP:

Visibilidade – Classes em PHP

Artigo seguinte do tutorial PHP:

Classes abstractas em PHP

Tiago Ramalho

Tiago Ramalho é um profissional de Informática interessado em Internet, Programação .NET e PHP e blogging. Nos tempos livres escreve nos interessespessoais.com sobre Jardim, Saúde, Sistemas, utilitários e outros temas relacionados com informática.

More Posts - Website - Twitter - Pinterest - Google Plus