Dominando a Herança do PHP
Ao longo deste artigo, falaremos sobre herança do PHP , incluindo como criar classes pai e filho, como a herança pode ser aplicada para reutilizar código e como sobrescrever métodos em classes pai de classes filhas quando necessário.
A programação orientada a objetos é uma disciplina na qual você pode criar novos tipos de classes com base nas existentes usando um conceito conhecido como herança.
Com herança, você pode reutilizar código, criar novas classes e adicionar novas funcionalidades.
Ao final deste artigo, você entenderá a herança do PHP e criará classes mais modulares, extensíveis e eficientes com ela.
Herança do PHP – O que é?
A herança do PHP é um mecanismo que permite que uma classe herde as propriedades e comportamentos de outra classe. Isso pode ajudar a reduzir a duplicação de código e facilitar a manutenção e extensão do código ao longo do tempo.
Há várias propriedades e métodos herdados da classe pai que são públicos e protegidos .
A classe também pode ter seus próprios métodos e propriedades que podem ser usados pela classe.
Usando a palavra -chave Extend , uma classe pode ser definida para herdar de outra classe.
Aqui está um exemplo simples de criar a classe de pais e filhos com a impressão de dados da classe infantil em relação à classe pai:
Example:
No exemplo de herança acima do PHP, a classe do aluno é definida com três propriedades (nome, idade e rollnum) e uma introdução de método () que exibe os valores dessas propriedades.
A turma do StudentResultinfo estende a aula do aluno, herdando suas propriedades e métodos. Ele também possui três propriedades adicionais ( Totalmarks , porcentagem e grau ) e um método ( MarksDisplay () ) que exibe os valores dessas propriedades junto com o nome, a idade e o número do rolo do aluno.
The constructor of StudentResultInfo calls the constructor of Student using the parent::__construct() method to initialize the inherited properties (name, age, and rollnum) and then initializes the new properties (totalmarks, percentage, and grade) with the values passed in.
Finalmente, um objeto da classe StudentResultinfo é criado usando a nova palavra -chave com argumentos passados para todas as propriedades. Os métodos Intro () e MarksDisplay () são chamados neste objeto para exibir as informações e o resultado do aluno.
Herança do PHP e Modificador de Acesso Protegido
Aprendemos no capítulo anterior que você pode acessar propriedades e métodos protegidos dentro de uma classe, bem como por classes derivadas que derivam dessa classe. O que isso significa?
Aqui está um exemplo. Fizemos uma pequena alteração no método da classe pai para ver qual saída obtemos:
Example:
O exemplo acima mostra que ocorrerá um erro se tentarmos invocar uma introdução de método protegida () de fora do escopo da classe.
Receberemos um aviso. Será bom usar métodos públicos!
Para ilustrar isso, vamos dar outro exemplo:
Example:
Dando uma olhada no exemplo acima, fica claro que tudo funciona conforme o esperado. A razão para isso é que o método protegido intro() é chamado de dentro da classe do tipo derivado.
Substituir métodos herdados
A herança do PHP de métodos também pode ser substituída, redefinindo os métodos na classe infantil usando o mesmo nome que os métodos herdados.
Você pode ver um exemplo disso abaixo. Haverá uma mudança nos métodos construct() e intro() na classe filha (StudentResultInfo) substituindo os métodos construct() e intro() da classe pai (Student):
Example:
Exemplo de Explicação
Este código é um exemplo de método que substitui o PHP. A classe Student é definida com três propriedades (name, age e rollnum) e um método protegido intro() que exibe os valores dessas propriedades.
A classe StudentResultInfo estende a classe Student, herdando suas propriedades e métodos. Ele substitui o método intro() da classe pai, redefinindo-o com uma nova implementação que exibe as informações e o resultado do aluno.
O construtor de StudentResultInfo também é definido com argumentos para todas as propriedades, mas em vez de chamar o construtor da classe pai, ele define as propriedades diretamente usando a palavra-chave $this.
Finally, an object of the StudentResultInfo class is created using the new keyword with arguments passed in for all the properties.
O método Intro () é chamado neste objeto, que exibe as informações e o resultado do aluno usando a implementação definida na classe StudentResultinfo, não na classe pai.
This demonstrates how child classes can override and provide their own implementation for methods inherited from parent classes, providing more specialized functionality.
Palavra-chave final do PHP
Você pode usar a palavra -chave final como uma maneira de impedir que a herança da classe aconteça ou impedir que os métodos sejam substituídos.
Este exemplo ilustra como você pode evitar a herança de classes em seu código: