Estava praticando as referencias para os objetos e me deparei com a seguinte situacao:
Criei o atributo e os metodos deposita e saca na classe filha iguais as da classe pai (sem override mesmo, para ver o que iria acontecer) mas o getSaldo nao, deixei apenas na classe pai
Ao rodar a classe que possui o main, o getSaldo vem da classe pai (Ok!!) e o valor eh zero (??)
minha duvida... quando o objeto eh criado em memoria sao criadas duas variaveis saldo dentro do objeto e os metodos apontam para as "caixinhas" diferentes? Como eh feita a criacao dos objetos quando temos heranca?
public class Conta {
private double saldo;
public void deposita(double valor) {
System.out.println("referencia contaC na Conta metodo deposita: " + this);
this.saldo += valor;
}
public void saca(double valor) {
this.saldo -= valor;
}
public double getSaldo() {
System.out.println("referencia contaC na Conta metodo getsaldo: " + this);
return saldo;
}
}
public class ContaCorrente extends Conta {
private double saldo;
public void deposita(double valor) {
System.out.println("referencia contaC na ContaCorrente metodo deposita: " + this);
this.saldo += valor;
}
public void saca(double valor) {
System.out.println("referencia contaC na ConcaCorrente metodo saca: " + this);
System.out.println("retirar: " + valor);
this.saldo -= valor;
System.out.println(this.saldo);
}
}
public class TestaConta {
public static void main(String[] args) {
ContaCorrente contaC = new ContaCorrente();
System.out.println("referencia contaC na criacao objeto: " + contaC);
contaC.deposita(500.0);
contaC.saca(10.0);
System.out.println("Saldo contaC: " + contaC.getSaldo());
}
}
Saida:
referencia contaC na criacao objeto: bytebank.ContaCorrente@4aa298b7
referencia contaC na ContaCorrente metodo deposita: bytebank.ContaCorrente@4aa298b7
referencia contaC na ConcaCorrente metodo saca: bytebank.ContaCorrente@4aa298b7
retirar: 10.0
490.0
referencia contaC na Conta metodo getsaldo: bytebank.ContaCorrente@4aa298b7
Saldo contaC: 0.0