Olá, estou com uma dúvida.
Recentemente, assisti a uma aula do curso de Java, onde os professores ensinaram a utilizar construtores com encapsulamento, como no exemplo abaixo:
public Pessoa(String nome, int idade) {
this.setNome(nome);
this.setIdade(idade);
}
Para praticar, resolvi fazer alguns exercícios com vetores, utilizando o exemplo orientado a objetos acima:
System.out.print("Quantas pessoas você vai adicionar? ");
int tamanhoVetor = sc.nextInt();
Pessoa[] vetor = new Pessoa[tamanhoVetor];
for (int contador = 0; contador < vetor.length; contador++) {
System.out.print("Dados da " + (contador + 1) + "ª pessoa: ");
vetor[contador].setNome(sc.next());
vetor[contador].setIdade(sc.nextInt());
}
Instanciei o vetor dessa forma, utilizando o encapsulamento, mas fiquei em dúvida se essa é uma boa prática. Quando pesquisei como instanciar um vetor orientado a objetos, encontrei uma abordagem diferente:
for (int contador = 0; contador < vetor.length; contador++) {
System.out.println("Dados da " + (contador + 1) + "ª pessoa:");
System.out.print("Nome: ");
String nome = sc.next();
System.out.print("Idade: ");
int idade = sc.nextInt();
vetor[contador] = new Pessoa(nome, idade);
}
No entanto, percebi que o construtor dessa segunda abordagem não utiliza encapsulamento, atribuindo os valores diretamente, como neste exemplo:
public Pessoa(String nome, int idade) {
this.nome = nome;
this.idade = idade;
}
Gostaria de saber: qual é a melhor prática neste caso?