Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Uso do this.

Percebi na resolução do instrutor que não utilizaram this. no método construtor. Ex: Aluno aluno = new Aluno("Julia", 10, 8, 7);

public Aluno(String n, int i, int i1, int i2, int i3) {
    this.nome = n;
    this.nota1 = i;
    this.nota2 = i1;
    this.nota3 = i2;
    this.nota4 = i3;
}
public double getNota1() {
    return nota1;
}

public void setNota1(double nota1) {
    this.nota1 = nota1;
}

public double getNota2() {
    return nota2;
}

public void setNota2(double nota2) {
    this.nota2 = nota2;
}

public double getNota3() {
    return nota3;
}

public void setNota3(double nota3) {
    this.nota3 = nota3;
}

public double getNota4() {
    return nota4;
}

public void setNota4(double nota4) {
    this.nota4 = nota4;
}


acima foi meu código.

Mas no código do instrutor ele nao declarou a palavra chave this.  Na construção do Aluno.

fiz o teste e nao rodou aqui.

Gostaria de esclarecer
3 respostas
solução!

Olá, Luis! Tudo bem?

Em Java, a palavra-chave this é uma referência à instância atual do objeto. Ela é usada principalmente para diferenciar entre os parâmetros do método e as variáveis de instância quando ambos têm o mesmo nome.

Por exemplo, no código abaixo, você tem o seguinte construtor:

public Aluno(String n, int i, int i1, int i2, int i3) {
    this.nome = nome;
    this.nota1 = nota1;
    this.nota2 = nota2;
    this.nota3 = nota3;
    this.nota4 = nota4;
}

Aqui, this.nome se refere à variável de instância nome e nome é o parâmetro do construtor. Como ambos têm o mesmo nome, usamos this para diferenciá-los. Já no exemplo que você trouxe, não é necessário utilizar o this, já que os nomes dos parâmetros e dos atributos do construtor são diferentes.

Quanto ao erro que você se referiu, você consegue mandar um print de onde está dando erro?

Fico no aguardo!

public Aluno(String n, int i, int i1, int i2, int i3) {
    this.nome = nome;
    this.nota1 = nota1;
    this.nota2 = nota2;
    this.nota3 = nota3;
    this.nota4 = nota4;
}

Opa fala Luis bom dia tudo bem? complementando oque a Iasmin falou pra vc, no exemplo ela colocou os parametros com nomes diferente, pode ficar confuso, por exemplo imagina um construtor instanciar todos os atributos da classe, por exemplo uma classe de Aluno ter esses atributos...

esquece as outras anotações da minha classe, peguei do projeto atual aqui da empresa kkkkk.

@AllArgsConstructor
@NoArgsConstructor
@Builder
@Entity(name = "Usuario")
@Table
@Data
public class Usuario {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String nome;
    private String email;
    private String senha;

A classe Usuario tem 4 atributos, agora vamos iniciar/instanciar esse objeto a partir do construtor...

    public Usuario (String nome, String email, String senha) {
        this.nome = nome;
        this.email = email;
        this.senha = senha;
    }

percebe que o construtor, tem 3 atributos no parametros, e que também é iguais os nome das variaveis da classe, observe que no construtor, ele está iniciando a variavel nome, email e senha com os valores que vc definir via parametro, por ser nomes iguals como o java iria identifcar qual iriamos referenciar? ai o this entra no meio pra fazer essa funcionalidade...

 public Usuario (String nome, String email, String senha) {
        this.nome // variavel da classe usuario      = nome // valor do construtor com o mesmo nome.
        this.email = email;
        this.senha = senha;
    }

então usamos o this pra separar qual é atributo da classe, e qual é do construtor... fiz um exemplo com o nome, o resto dos atributos é a mesma coisa que acontece.

Alisson Fernando berçalini e Iasmin Araújo, Muito obrigado pelo esclarecimento, havia me esquecido desse detalhe da diferenciação ou não, para com os argumentos e atributos! Gratidão!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software