Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Como consigo acessar $conta->estado dentro dos estados?

Na resposta do exercício as mudanças de estado são feitas por $conta->estado = new Negativo(). Não é necessário utilizar $conta->setEstado() ?

2 respostas

Olá Carlos, tudo bom?

Se sua classe Conta e sua classe Estado estão no mesmo pacote, o atributo do tipo protected é compartilhado entre eles. Não necessitando, neste caso, do setter.

Quando trabalhamos com protected, dividimos nossos atributos ou métodos com quem herda e com quem está no mesmo pacote!

solução!

Mas, o modificador protected faz com que as classes filhas tenham acesso ao membro em questão, e não as do mesmo pacote. Tanto é que fiz um teste da forma que está no exercício e obtive um erro: https://cursos.alura.com.br/forum/topico-recebo-um-erro-quando-tento-acessar-as-propriedades-de-conta-dentro-dos-estados-23153