Bem, estou estudando e bateu uma dúvida sobre boa prática quanto a classes. Bem, tenho uma classe chamada CONTA e outra classe chamada CLIENTE. Eu quero que minha classe Cliente possa ser apenas instanciada na classe Conta, ou seja, quero que eu não consiga acessar a classe Cliente através da main .
Depois de tanto pesquisar e tentar, a única forma que consegui fazer isso foi fazendo classes aninhadas (não sei se isso é uma boa prática). Segue o código abaixo:
public class Conta {
public class Cliente {
private String nome;
private String endereco;
public String getNome(){
return nome;
}
public void setNome(String nomeDoClinete){
nome = nomeDoClinete;
}
public String getEndereco(){
return endereco;
}
public void setEndereco(String enderecoDoCliente){
endereco = enderecoDoCliente;
}
}
public Cliente titular = new Cliente();
private double[] historico = new double[50];
private double totalDaConta = 0;
private int identificador;
static int contador = 0;
public double[] getHistorico() {
return historico;
}
public void setHistorico(double[] historico) {
this.historico = historico;
}
public double getTotalDaConta() {
return totalDaConta;
}
public void setTotalDaConta(double totalDaConta) {
this.totalDaConta = totalDaConta;
}
public int getIdentificador() {
return identificador;
}
public void setIdentificador(int identificador) {
this.identificador = identificador;
}
}
Código da Classe Principal:
public class Programa {
public static void main(String[] args) {
Conta testePessoa = new Conta();
testePessoa.titular.setNome("Cliente teste");
//Testando a saída
System.out.println(testePessoa.titular.getNome());
//Se eu tentar instanciar um objeto Cliente...
Cliente testeCliente = new Cliete(); //não consigo
}
}
Então essa foi a única forma que encontrei para não poder instanciar Cliente dentro da main. Mas achei que o código ficou muito confuso e poluído. Queria saber se esse é o melhor método?
Grato.