1
resposta

Gerando um objeto da classe filha a partir da classe mais genérica eu não consegui acessar o getter da classe filha

Classe Conta

public class Conta {
    private double saldo = 0;
    private int agencia;
    private int numero;
    private Cliente titular;
    private static int total;

    public Conta(int agencia, int numero) {
        Conta.total++;
        this.agencia = agencia;
        this.numero = numero;

    }

    // definindo o método deposita

    public void deposita(double valor) {
        this.saldo += valor;

    }
    // definindo o método saca

    public boolean saca(double valor) {
        if (this.saldo >= valor) {
            this.saldo -= valor;
            return true;
        } else {
            return false;
        }
    }

    // definindo o método transfere

    public boolean transfere(double valor, Conta contaDestino) {
        if (this.saca(valor)) {
            contaDestino.deposita(valor);
            return true;
        } else {
            return false;
        }
    }

    // public boolean transfere(double valor, Conta contaDestino) {
    // if (this.saldo >= valor) {
    // this.saldo -= valor;
    // contaDestino.deposita(valor);
    // return true;
    // } else {
    // return false;
    // }
    // }

    public double getsaldo() {
        return this.saldo;
    }

    public int getNumero() {
        return this.numero;
    }

    public void setNumero(int numero) {
        if (numero <= 0) {
            System.out.println("Número da conta ínvalido");
            return;
        }
    }

    public int getAgencia() {
        return this.agencia;
    }

    public void setAgencia(int agencia) {
        if (agencia <= 0) {
            System.out.println("Número da Agência inválido");
            return;
        }
        this.agencia = agencia;
    }

    public void setTitular(Cliente titular) {
        this.titular = titular;
    }

    public Cliente getTitular() {
        return this.titular;
    }

    public static int getTotal() {
        return Conta.total;
    }
}

Classe Conta Corrente

public class ContaCorrente extends Conta { public double tarifaSaque;

public ContaCorrente(int agencia, int numero, double tarifaSaque) { super(agencia, numero); this.tarifaSaque = tarifaSaque; }

@Override public boolean saca(double valor) { double valorASacar = valor + this.tarifaSaque; return super.saca(valorASacar); }

public void setTarifaSaque(double tarifaSaque) { this.tarifaSaque = tarifaSaque; }

public double getTarifaSaque() { return tarifaSaque; } }

Código com erro, não acessou o getter

public class TestaContas {
    public static void main(String[] args) {
        Conta cc = new ContaCorrente(111, 1111, 0.2);
        Conta cp = new ContaPoupanca(222, 2222);

        cc.deposita(100);
        cp.deposita(100);

        cc.transfere(10, cp);

        System.out.println(cc.getsaldo());
        System.out.println(cp.getsaldo());

        System.out.println(cc);
        System.out.println(cc.getTarifaSaque()); //não acessa o getter

    }

}

Só acessou quando instanciei o objeto com a classe ContaCorrente

public class TestaContas {
    public static void main(String[] args) {
        ContaCorrente cc = new ContaCorrente(111, 1111, 0.2);
        ContaPoupanca cp = new ContaPoupanca(222, 2222);

        cc.deposita(100);
        cp.deposita(100);

        cc.transfere(10, cp);

        System.out.println(cc.getsaldo());
        System.out.println(cp.getsaldo());

        System.out.println(cc);
        System.out.println(cc.getTarifaSaque()); //assim acessa o getter

    }

}

Fiquei na dúvida por que não consigo acessar o getter da classe ContaCorrente
ao instanciar o objeto a partir da Classe Conta, havia entendido que mesmo 
gerando a partir da classe conta, ao invocar o construtor ContaCorrente, eu 
também seria capaz de acessar os getters da ContaCorrente. Entendi errado?  
Poderia me explicar um pouco melhor?

Obrigado.
1 resposta

experimenta no método colocar assim

public double getTarifaSaque() { 
return this.tarifaSaque;
 }