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() ?
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!
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() ?
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!
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