Informática, perguntado por tthai123, 1 ano atrás

No código a seguir
01: class Cliente {
02: public $nome;
03: protected $saldo;
04: }
05: class Pessoa extends Cliente {
06: private $idade;
07: $this->saldo = 0;
08: }
09: $cli = new Pessoa;
10: $cli->nome = “Pedro”;
11: $cli->saldo = 3000;
12: $cli->idade = 35;

Quais linhas retornariam erro ?
a) 06 e 07
b) 09, 11 e 12
c) 11 e 12
d) Nenhuma linha dá erro. Todas estão corretas.

Explicação pf

Soluções para a tarefa

Respondido por bokomoko
1
11 e 12 retornariam erro

Primeiro porque a variável $cli é do tipo Pessoa

O tipo Pessoa é herdada da classe Cliente (devia ser ao contrário mas tudo bem). 
A classe Cliente tem dois atributos
$nome e $saldo
Acontece que $saldo é protegido. Significa que só um método pode modificá-lo. A tentativa de atribuição direta ao saldo na linha 11 dá erro por causa disso.

A classe Pessoa tem um atributo $idade, além do atributo herdado da classe Cliente. Acontece que esse atributo é privado. Não pode ser acessado de fora a não por um método (setter). Portanto a linha 12 também dá erro.

Bom, além disso a linha 7 dá erro pois ela está atribuindo um valor ao atributo $saldo, que é protegido na classe Cliente e ainda por cima fora do método.

Perguntas interessantes