Precisa de um freelancer, códigos-fonte e exemplos completos? Bem-vindo(a) ao meu site. Além de realizar alguns serviços como freelancer eu tenho alguns códigos-fonte e exemplos completos de Java, Delphi, PHP, Python, C/C++, Hibernate, JPA, Spring, JSP, Servlets, Ruby, Ruby On Rails e muitas outras linguagens e frameworks. Veja como falar comigo clicando aqui.
Você
está aqui:Inicio
-> Tutoriais
-> PHP - Herança, construtores e a palavra-chave parent
Herança, construtores
e a palavra-chave parent
Quando estamos implementando herança
em nossos códigos PHP, precisamos estar atentos à
questão dos construtores. Como sabemos, é possível
fornecer parâmetros para a instância que queremos
criar através do método __construct
da classe.
Imagine o cenário em que queremos passar parâmetros
para o construtor de uma classe derivada. Como acrescentamos
mais propriedades à nova classe, é certo pensar
que teremos que chamar primeiro o construtor da super-classe,
inicializar suas propriedades e só então chamar
o construtor da classe derivada, inicializando as propriedades
adicionadas. Veja um exemplo:
<?
// definição da classe Pessoa
class Pessoa{
private $nome;
private $idade;
function __construct($nome, $idade){
$this->nome = $nome;
$this->idade = $idade;
}
public function getNome(){
return $this->nome;
}
}
// definicao da classe Cliente
class Cliente extends Pessoa{
private $codigo;
// Cria um objeto da classe Cliente
$cliente = new Cliente("Carlos Silva", 45, 5234);
echo $cliente->getNome();
?>
Veja que a classe pai possui as seguintes propriedades:
private $nome;
private $idade;
Como estas propriedades estão marcadas com o modificador
private, elas não são
acessíveis a partir da classe derivada. A classe derivada,
por sua vez, acrescenta a
propriedade:
private $codigo;
Veja o construtor da classe derivada:
function __construct($nome,
$idade, $codigo){
parent::__construct($nome, $idade);
$this->codigo = $codigo;
}
Observe como usamos a palavra-chave parent
para acessar o construtor da superclasse e instanciar suas propriedades.
Sem esta técnica, estas propriedades jamais poderiam
ser acessadas e modificadas a partir da classe derivada. Use-a
para chamar qualquer método de uma classe pai.
Todo o conteúdo deste site,
quando não devidamente observado, pertence a seus idealizadores
e não
poderá ser usado para outras finalidades senão estudo e
aprimoramento de técnicas de programação.
Certifique-se de ler asnotas legaisantes de proceder com
o acesso e leitura do
conteúdo disponibilizado nestas páginas.