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.