Boa noite, tudo bem?
Estou com uma duvida com relação a herança. É o seguinte, eu tenho a classe pai Produto, com os atributos comuns a todos e, tenho também a classe filha chamada Livro desta forma:
class Produto{
private $nome;
private $preco;
private $descricao;
private $usado;
private $categoria
//getters, setters e demais funções.
}
class Livro extends Produto{
private $isbn;
//getters e setters.
}
Bom, definindo a regra de negócio que categoriza cada produto como tal, eu tenho uma instância do DAO para gerencia dos dados e da classe Livro para criação do objeto a ser utilizado pela DAO da seguinte maneira:
$produtoDao = new ProdutoDao($conexao);
$produto = new Livro($nome, $preco, $descricao, $usado, $categoria);
$produto->setIsbn($isbn); //Recebido por $_POST['isbn'] e atribuído a $isbn. //ISSO É DA CLASSE HERDEIRA!
$produtoDao->insereProduto($produto);
Agora, ao adicionar este objeto da classe Livro utilizando a função insereProduto, os parâmetros estabelecidos nela me deixaram confuso. Vejam como está:
class ProdutoDAO{
//demais funções
function insereProduto(Produto $produto){ // AQUI ESTÁ MINHA DUVIDA
//Regra de negocio
}
//demais funções
Eu estou recebendo como parâmetro um tipo Produto e, esse Produto ( pensando dentro da classe ) não possui o atributo isbn. Porém, eu consigo dar um echo em $produto->getIsbn() dentro do método insereProduto.
O que acontece aqui? Quando temos a passagem de um atributo da classe filha, que não existe na classe pai, por meio de um método que recebe como parâmetro a classe pai, ele é criado dentro desta?
Em outras palavras, neste exemplo é como se a classe Produto ganhasse o atributo isbn?
Um abraço.