public class Conta {
private double saldo;
private int agencia;
private int numero;
private Cliente titular = new Cliente();
public void deposita(double saldo){
this.saldo = this.saldo + saldo;
}
public boolean saca(double valor){
if (this.saldo >= valor ){
this.saldo = this.saldo - valor;
return true;
}else{
System.out.println("Dinheiro insuficiente");
return false;
}
}
public boolean transfere(double valor, Conta destino){
if (this.saldo >= valor){
this.saldo = this.saldo - valor;
destino.deposita(valor);
return true;
}else{
System.out.println("Sem dinheiro o suficiente para transferir");
return false;
}
}
public double getSaldo(){
return this.saldo;
}
public void setAgencia(int novaAgencia){
if ( novaAgencia <= 0 ){
System.out.println("Número não aceito");
}else{
this.agencia = novaAgencia;
}
}
public int getAgencia(){
return this.agencia;
}
public int getNumero(){
return this.numero;
}
public void setNumero(int numero){
this.numero = numero;
}
public Cliente getTitular(){
return this.titular;
}
public void setTitular(Cliente titular){
this.titular = titular;
}
}
public class Cliente {
private String nome;
private String cpf;
private String profissao;
public String getNome() {
return nome;
}
public String getProfissao() {
return profissao;
}
public void setProfissao(String profissao) {
this.profissao = profissao;
}
public String getCpf() {
return cpf;
}
public void setCpf(String cpf) {
this.cpf = cpf;
}
public void setNome(String nome) {
this.nome = nome;
}
}
public class TestaGetSet {
public static void main(String[] args) {
Conta contaDaLuana = new Conta();
contaDaLuana.setAgencia(2);
System.out.println(contaDaLuana.getAgencia());
contaDaLuana.setNumero(111);
System.out.println(contaDaLuana.getNumero());
contaDaLuana.getTitular().setNome("luana");
System.out.println("Nome: " + contaDaLuana.getTitular().getNome());
contaDaLuana.getTitular().setCpf("999.999.999-99");
System.out.println("CPF: " + contaDaLuana.getTitular().getCpf());
contaDaLuana.getTitular().setProfissao("Tech");
System.out.println("Profissão: " + contaDaLuana.getTitular().getProfissao());
System.out.println("Endereço de memória referencia: " + contaDaLuana.getTitular()); // retorna Cliente@15db9742
System.out.println("Endereço de memória da conta: " + contaDaLuana); // retorna Conta@6d06d69c
}
}
A minha dúvida é a seguinte: Ao imprimir no terminal contaDaLuana.getTitular() me retorna Cliente@15db9742 e depois contaDaLuana me retorna Conta@6d06d69c até aí tudo ok! Mas ao inverter a ordem, segue código abaixo:
System.out.println("Endereço de memória da conta: " + contaDaLuana); // retorna Conta@15db9742
Sstem.out.println("Endereço de memória referencia: " + contaDaLuana.getTitular()); // retorna Cliente@6d06d69c
contaDaLuana passou a ter o endereço de memória da referencia ao objeto Titular e vice e versa, ou seja, contaDaLuana não deveria continuar com o valor de Conta@6d06d69c e contaDaLuana.getTitular() com o valor Cliente@15db9742?