Herança
A Herança em Orientação a Objetos permita que uma determinada classe herde definições de outras classes. Para utilizar este conceito em PHP, deve ser utilizada a palavra reservada extends
. A Herança Múltipla, que permite que uma classe herde definições de mais de uma classe, não é disponibilizada no PHP.
A seguir é apresentado um exemplo de uma classe Funcionario
que herda as definições da classe Pessoa
.
<?php
require_once ("Pessoa.php");
class Funcionario extends Pessoa
{
public $CodFuncionario;
public $Salario;
function Funcionario(){
parent::Pessoa();
echo "Chamando o método construtor de Funcionario..";
}
public function mostrarDados(){
echo "</br> Subclasse Funcionario </br> ";
echo "Cpf: ".$this->Cpf;
echo "</br>";
echo "Cód. Funcionário: ".$this->CodFuncionario;
}
}
?>
Na classe Funcionario
foram definidas duas propriedades, CodFuncionario
e Salario
, além do método mostrarDados
e o método construtor (Funcionario
). O método mostrarDados
imprime o Cpf , propriedade definida na classe base (superclasse) e o Código do Funcionário, que é uma propriedade da classe Funcionario
. No método construtor é usada a instrução parent::
, que é utilizada para acessar definições (por exemplo, métodos e propriedades) da classe base (superclasse). Neste exemplo específico, a instrução parent::Pessoa()
invoca o método construtor da classe Pessoa
,
A instrução require_once ("Pessoa.php")
requer/importa as definições da classe Pessoa
, que estão em um arquivo “Pessoa.php” para que possam ser utilizadas. A instrução require_once
só importa o arquivo solicitado se este já não tiver sido importado anteriormente.
Agora, é mostrado um script PHP que faz uso das definições anteriores da classe Pessoa
e Funcionario
.
<?php
$f1 = new Funcionario();
$f1->Cpf = "000-000-000-00";
$f1->CodFuncionario="010101";
x$f1->mostrarDados();
?>
No código mostrado, foi instanciado um objeto da classe Funcionário
, logo em seguida foi definido um valor para propriedade Cpf, que pode ser acessada porque a classe Funcionario
herda todas as definições de Pessoa
e, por fim, foi invocado o método mostrarDados
, definido na classe Funcionario
.