3
respostas

Prefixo this

Quando utilizo o prefixo this em um metodo de uma classe abstrata ele perde o sentido? Já que this é prefixo de instancia e classes abstratas não podem ser instanciadas

3 respostas

não, por mais que a classe abstrata não possa ser instanciada diretamente, outra classe que permita instanciação pode extender desta classe abstrata. se o atributo não for sobrescrito pela classe que a extendeu, o this.atributo nesta classe irá chamar o atributo da classe abstrata, caso sobrescreva, devera utilizar o super.atributo para referenciar que o atributo deve ser da classe extendida

Olá Victor!

A classe abstrata ainda que não possa ser instanciada, pode ter métodos concretos, assim como atributos. Portanto o this ainda tem a sua propósito dentro da classe abstrata. Além disso como a classe abstrata pode ser herdada por classes concretas, o this se refere a instância atual da classe concreta.

Quando você usa o prefixo this em um método de uma classe abstrata, ele ainda tem significado e pode ser utilizado, embora seja um pouco diferente do que quando usado em uma classe concreta.

O this em uma classe abstrata refere-se ao objeto que é criado quando uma classe concreta é instanciada a partir da classe abstrata. Embora uma classe abstrata em si não possa ser instanciada, as classes que a estendem podem ser, e é nesse contexto que o this tem significado.

Por exemplo, considere o seguinte código de uma classe abstrata MinhaClasse com um método meuMetodo():

public abstract class MinhaClasse {
    public void meuMetodo() {
        System.out.println(this.getClass().getSimpleName());
    }
}

Aqui, this se refere ao objeto que está chamando o método meuMetodo(), que pode ser uma instância de uma classe que estende MinhaClasse. O método getClass().getSimpleName() retorna o nome da classe do objeto que está chamando o método, que no contexto de uma classe concreta seria o nome da classe da instância.

Em resumo, embora uma classe abstrata em si não possa ser instanciada, as classes concretas que a estendem podem ser, e é nesse contexto que o this em um método de uma classe abstrata tem significado.

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