1
resposta

[Dúvida] Puxar Valores e Atributos da Classe mãe para a classe filha.

Gostaria de trazer o valor do saldo depositado na classeMãe ContaBancaria para minha classeFilha ContaCorrente; alguém por favor pode me socorrer com essa mágica?

no meu Main, quando deposito na classe mãe e em seguida consulto o saldo na classe filha, o valor sempre zera. Gostaria que ele herdasse não só o atributo mas também o valor de saldo.

obrigado.

    
 public class ContaCorrente extends ContaBancaria {


    @Override
    public double getSaldo(double saldo) {
        return super.getSaldo(saldo);
    }

    @Override
    public void setSaldo() {
        super.setSaldo();
        this.saldo = super.saldo;
    }

    @Override
    public void depositarQuantia(double valor) {
        super.depositarQuantia(valor);

        System.out.println("Depósito de valor " + valor + " realizado. Saldo Atual: " + saldo);
    }
    // ATRIBUTOS DA CLASSE LOCAL

    private double tarifaMensal;

    // GETTERS AND SETTERS

    public void setTarifaMensal(double tarifaMensal) {
        this.tarifaMensal = tarifaMensal;
    }

    // MÉTODOS

    public void cobrarTarifaBancaria(double tarifaMensal) {
        saldo = saldo - (saldo * tarifaMensal);
        System.out.println("Tarifa mensal de " + tarifaMensal + " cobrada. saldo atual: " + saldo);
    }

}
1 resposta

Olá, Breno! Tudo bem?

Isso está acontecendo porque você está sobrescrevendo o método setSaldo() na classe filha, mas não está passando nenhum parâmetro para ele.

Quando você chama super.setSaldo(), você está chamando o método setSaldo() da classe mãe, mas sem passar nenhum valor para ele, o que provavelmente está zerando o saldo.

Segue um exemplo completo, tente replicá-lo no seu contexto:

// Classe mãe (superclasse)
class ClasseMae {
    // Atributo da classe mãe
    protected String atributoMae;

    // Construtor da classe mãe
    public ClasseMae(String atributoMae) {
        this.atributoMae = atributoMae;
    }

    // Método da classe mãe
    public void mostrarAtributoMae() {
        System.out.println("Atributo da classe mãe: " + atributoMae);
    }
}

// Classe filha (subclasse)
class ClasseFilha extends ClasseMae {
    // Atributo adicional da classe filha
    private String atributoFilha;

    // Construtor da classe filha
    public ClasseFilha(String atributoMae, String atributoFilha) {
        // Chama o construtor da classe mãe
        super(atributoMae);

        // Inicializa o atributo da classe filha
        this.atributoFilha = atributoFilha;
    }

    // Método da classe filha que utiliza atributos da classe mãe
    public void mostrarAtributos() {
        System.out.println("Atributo da classe mãe: " + atributoMae);
        System.out.println("Atributo da classe filha: " + atributoFilha);
    }
}

public class Main {
    public static void main(String[] args) {
        // Criar uma instância da classe filha
        ClasseFilha objetoFilho = new ClasseFilha("Valor da classe mãe", "Valor da classe filha");

        // Chamar método da classe mãe através do objeto da classe filha
        objetoFilho.mostrarAtributoMae();

        // Chamar método da classe filha que utiliza atributos da classe mãe
        objetoFilho.mostrarAtributos();
    }
}

Neste exemplo, a classe ClasseFilha estende a classe ClasseMae e, portanto, herda o atributo atributoMae. O construtor da classe filha chama o construtor da classe mãe usando super(atributoMae). Dessa forma, a classe filha pode acessar e usar tanto os atributos quanto os métodos da classe mãe.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software