1
resposta

[DÚVIDA] Métodos Getters e Setters dentro de construtores

Na aula de construtores vimos que os atributos são inicializados com um valor default, porém percebi que o instrutor usa somente o this para fazer a atribuição aos valores inicializados, acessando o atributo de forma direta, conforme código abaixo:

public class Conta {

private double saldo;
private int agencia;
private int numero;
private Cliente titular;
private static int total = 0;

public Conta(int agencia, int numero){
    Conta.total++;
    System.out.println("O total de contas é " + Conta.total);
    this.agencia = agencia;
    this.numero = numero;
    this.saldo = 100;
    System.out.println("Estou criando uma conta" + this.numero);
}

}


no momento em que estamos construindo um objeto, onde temos os construtores, não seria melhor usarmos os métodos setters dentro do próprio construtor, pois as vezes precisamos fazer certas validações para o atributo poder receber valores válidos.

outra dúvida, qual a diferença entre fazer validações dentro do contrutor e dentro dos setters, para validar os atributos? Existem casos onde seja melhor fazer validações em um do que em outro, pois se usarmos os setters dentro dos construtores, já poderíamos fazer as validações somente dentro dos setters, este pensamento está correto?

Valeu, abraços!!

1 resposta

Fala Armando, de boa ?

Cara sua dúvida é bem bacana!

Geralmente existem algumas formas de validar os dados, seja mandando o setter ai dentro e ai vão outras abordagens que você vai acabar vendo conforme for avançando nos demais cursos, como por exemplo colocar a lógica se um campo é valido ou não dentro do construtor (if mesmo), quando for usar algum framework vai ver que eles ja possuem algumas estrategias, como anotações para fazer esse tipo de validação e por ai vai, nenhuma delas está errada, ambas solucionam o mesmo problema, ai no caso tu vai precisar ver o que faz mais sentido para ti... se estiver num projeto(provavelmente vai estar) que use algum desses frameworks, não há motivo para chamar o set ou fazer na mão, a gente acaba delegando para o framework, quando não, a galera acaba fazendo a lógica ali mesmo ou chamando os sets.