Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

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