1
resposta

[Dúvida] sobre contrutores

Na primeira apresentação dos construtores foi informado que devemos criar desta forma:

public Titulo(String nome, int anoDeLancamento) {
        this.setNome = nome;
        this.setAnoDeLancamento = anoDeLancamento;
    }

Utilizando o métodos set para atribuir um valor. Depois em outros exemplos atribuiu o valor sem o set. Qual é a forma correta?

1 resposta

Olá, Caique! Tudo bem?

Na verdade, ambas as formas estão corretas e a escolha entre uma ou outra depende do contexto do seu código.

Quando você usa o método setter dentro do construtor, como no primeiro exemplo que você mencionou, você está fazendo uso do encapsulamento. Isso significa que, se houver alguma lógica específica implementada dentro do método setter (como validações, por exemplo), essa lógica será aplicada quando você criar um novo objeto.

Por outro lado, quando você atribui o valor diretamente ao atributo, como no exemplo abaixo,

public Titulo(String nome, int anoDeLancamento) {
    this.nome = nome;
    this.anoDeLancamento = anoDeLancamento;
}

você está atribuindo o valor do parâmetro diretamente ao atributo do objeto. Isso é perfeitamente válido, mas não aplica nenhuma lógica adicional que possa estar presente em um método setter.

Então vai da sua necessidade: se seu método setter tem alguma lógica encapsulada, é legal usar o set. Caso contrário, pode passar os atributos diretamente.

Espero ter ajudado e bons estudos!