1
resposta

Utilização do this e super na implentação do método na classe filha

No exercício da aula 5, o método deposita da classe Conta foi alterado para abstract. Na implementação deste método na classe filha ContaCorrente, foi orientado utilizar o saldo da super classe. No entanto, usando o this, funcionou da mesma forma, trazendo o mesmo resultado. Por que tem de ser o super?

public abstract class Conta {

  // private double saldo = 100.0;
   protected double saldo;
   private int agencia;
   private int numero;
   private Cliente titular; 
   private static int total = 0; // static indica que a variável é da classe, não do método

   public abstract void deposita(double valor);


   // este construtor abaixo obriga que seja passado a agencia e conta(número) como parâmetro no "New conta()"
   public Conta(int agencia, int numero){
       total++;
      this.agencia = agencia;
      this.numero = numero;
    // System.out.println("Estou criando uma conta");
   }

   public boolean saca(double valor){
      if(valor > 0 && this.saldo >= valor){
          this.saldo -= valor;
          System.out.println("saque ok");
          return true;
      }
      System.out.println("saldo insuficiente");
      return false;
   }

    public boolean transfere(double valor, Conta destino){
        if (this.saca(valor)){
           destino.deposita(valor);
           System.out.println("transferencia ok");

public class ContaCorrente extends Conta {

    public ContaCorrente(int agencia, int numero){
       super(agencia, numero);  //criando o construtor e repassando os parâmetros para a classe mãe

   }

    @Override
       public boolean saca(double valor){
            double valorASacar = valor + 0.2;
             //System.out.println(valorASacar);
            //  System.out.println("entrou aqui");
             return super.saca(valorASacar);
       }

    @Override
    public void deposita(double valor) {
           if (valor > 0){
            this.saldo += valor;  
           }

    }

}    

insira seu código aqui

1 resposta

Oi Evanise, tudo bem?

o super infere que a chamada deve ser feita em um método/variável da classe pai. O this, por outro lado busca da classe filha e depois da classe pai.

Abraço!