Vou colocar aqui as minhas classes e, ao final, faço a pergunta.
public class Conta {
protected double saldo;
protected String nome;
public double getSaldo() {
return this.saldo;
}
public void deposita(double valor) {
this.saldo += valor;
}
public void saca(double valor) throws Exception {
if(this.saldo >= valor) {
this.saldo -= valor;
} else {
throw new Exception();
}
}
public void atualiza(double taxa) {
this.saldo += this.saldo * taxa;
}
}
public class ContaCorrente extends Conta {
protected String apelido;
public void atualiza(double taxa) {
this.saldo += this.saldo * (taxa * 2);
}
@Override
public void saca(double valor) {
this.saldo -= valor;
}
}
public class main {
public static void main(String[] args) {
Conta cc = new ContaCorrente();
cc.deposita(1000);
System.out.println("Saldo: " + cc.getSaldo());
try {
cc.saca(1400);
} catch (Exception e) {
System.out.println("Tem dinheiro não, bródi!");
}
System.out.println("Saldo: " + cc.getSaldo());
}
}
Por que o método saca() que está sendo executado é o da classe ContaCorrente (sem validação) e não o da classe Conta? Até o Eclipse, quando passo o mouse em cima do nome do método, diz que ele é da Conta.