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

"super.saldo += valor" funcionando?

// Como o comando "super.saldo += valor" na class ContaPoupança funcionou se o saldo está como private?

//clas Conta public abstract class Conta {

    private double saldo; ❓
    private int agencia;
    private int numero;
    private Cliente titular;
    private static int total = 0;

//

//class ContaPoupança public class ContaPoupanca extends Conta {

    public ContaPoupanca(int agencia, int numero) {
        super(agencia, numero);
    }

    @Override
    public void deposita(double valor) {
        super.saldo += valor; ❓
    }

}

3 respostas

Fala Henrique, tudo bem?

O código só funciona se o atributo saldo da classe Conta for protected (ou algum outro modificador de acesso menos restritivo, como public), caso contrário a classe filha ContaPoupanca mesmo fazendo extends de Conta não terá acesso.

Fala Otávio, estou muito bem, e você?

Essa é exatamente minha dúvida! No vídeo do Nico, ele rodou o programa conforme descrito acima. Como sou novo no Java, queria saber se ele fez alguma coisa pra rodar, até onde eu aprendi, só rodaria se fosse protected ou public, como você disse. PS: Aula 05 de Java parte 3, item 07 (Abstract no exemplo Conta). Aos 2:10 nós vemos o private double saldo, aos 4:13 vemos o super.saldo += valor. Caso seja algo que eu ainda vou ver em aulas futuras, perdão, mas a dúvida é grande.. vlw!

solução!

Então, no minuto 4:00 do vídeo, o instrutor muda o modificador de acesso para protected para conseguir acessar o atributo na classe ContaPoupanca, caso contrário não compilaria.

vídeo: https://cursos.alura.com.br/course/java-heranca-interfaces-polimorfismo/task/35087

Abraço!