Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Dúvida Aula: 07 Abstract no exemplo Conta - não posso usar o super.gestSaldo()?

Essa dúvida foi levantada no ano passado, mas a resposta não deixou o assunto claro pra mim.

Se eu estou dando Override em um método - o deposita, por exemplo - como eu não posso dar um getSaldo() para pegar este atributo privado? Pelo que eu havia entendido em aulas anteriores é que fazer uma atributo ter visibilidade "protected" não é comum. Será que não existe uma forma de eu passar a responsabilidade dessa consulta à classe pai?

1 resposta
solução!

Olá, Vinícius! Tudo bem contigo?

Quando eu implanto um método abstrato dentro da minha classe pai

public abstract void deposita(double valor);

eu obrigo que minhas classes filhas implantem seus métodos. "Ditem suas regras".

Até aí acredito que esteja tudo bem!!!

Agora vai depender de como eu deixei meu Getter e meu Setter, pois eles serão minhas vias de acesso aos atributos privados.

Normalmente vemos programadores deixando seus Setters privados evitando que os dados sejam inseridos diretamente nos atributos pelas classes filhas. Criam-se construtores públicos para que esses dados sejam inseridos no momento da instância.

Já os Getters são públicos para que as filhas consultem os atributos. Como serão somente consultas e não há alterações de dados, não teria risco. Isso é não é regra, Vinícius! Somente o que vemos em grande parte dos códigos com Getters e Setters.

Sobre deixar o atributo como protected realmente não é muito bom mesmo! Para a segurança do seu código é melhor deixar seus atributos privados.

Uma dica de estrutura básica (pelo menos para estudo) seria:

  • Atributos privados
  • Construtores públicos (dependo se seu projeto precise de algum construtor)
  • Métodos abstratos ou não (depende muitos do seu projeto também)
  • Getters públicos para as filhas consultarem.
  • Setters privados, jogando a responsabilidade para os construtores, que também depende da estrutura do seu projeto.

Caso queria tornar uma responsabilidade de consulta para a classe pai, deixe seus Getters privados e crie métodos públicos de consulta. É uma solução!!!

Espero ter ajudado, Vinícius!!!

Um abraço e bons estudos!