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
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
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.