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