Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

andrevictor

[Resolvido] Herança em PHPOO

Recommended Posts

E aí pessoal,

 

Montei esse código para teste e aplicação de algumas coisas que li sobre herança em phpOO e não tive a saída esperada, gostaria da ajuda de vocês para encontrar e resolver o erro. Ainda estou em fase de aprendizagem, então é provável que seja algo que necessite de uma explicação simples.

 

Aí está o meu código:

 


 <?php

class Pai{

	protected $_nomeDoPai;

	public function setNomeDoPai($nomeDoPai){

		$this->_nomeDoPai = $nomeDoPai;

	}

	public function getNomeDoPai(){

		return $this->_nomeDoPai;

	}

}

class Filho extends Pai{

	private $_nomeDoFilho;

	public function setNomeDoFilho($nomeDoFilho){

		$this->_nomeDoFilho = $nomeDoFilho;

	}

	public function getNomeDoFilho(){

		return $this->_nomeDoFilho . ' é filho do ' . $this->getNomeDoPai();

	}

}

       $pai = new Pai();
$filho = new Filho();

$pai->setNomeDoPai('Joaquim');
echo 'O nome do pai é: ' . $pai->getNomeDoPai() . '<br />';

$filho->setNomeDoFilho('Manoel');
echo $filho->getNomeDoFilho() . '<br />';

 

 

A saída que tenho é:

 

 

O nome do pai é: Joaquim

Manoel é filho do

 

 

Eu esperava que a saída fosse:

 

 

O nome do pai é: Joaquim

Manoel é filho do Joaquim

 

 

Ahhh!! E se houver algum outro erro de implementação, ou seja, alguma coisa transforme o meu código em um script que não siga os princípios da Programação Orientada a Objetos, não hesitem em questionar (e quem sabe me ajudar a entender, rs).

 

E obrigado pela atenção!

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema é que o Nome do Pai foi definifo através do objeto armazenado na variável $pai

 

E o Nome do Filho foi recuperado através do objeto armazenado na variável $filho.

 

São objetos diferentes, logo um não conhece o outro. Tádinho do bastardinho... :P

 

Veja que se você mudar a invocação para:

 

//$pai = new Pai();
$filho = new Filho();

$filho->setNomeDoPai('Joaquim');
echo 'O nome do pai é: ' . $filho->getNomeDoPai() . '<br />';

$filho->setNomeDoFilho('Manoel');
echo $filho->getNomeDoFilho() . '<br />';

Vai ter o que espera.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.