Oi Natan! Boa pergunta! Vou responder em duas partes.
Primeiro, se usamos this.titulo
, fica claro para quem lê que a variável é uma variável de instância e não uma variável local. Mas nesse exemplo que você deu, o this é opcional.
Agora, vou lhe mostrar um exemplo onde o this não é opcional:
public setNome(String nome) {
nome = nome;
}
Supondo que há o atributo nome
na classe, o que você acha que vai acontecer? O Compilador não sabe se você quer mudar o atributo da classe ou o valor da parâmetro do método. Vai rolar algo chamado shadowing. Ele vai fazer com que o parâmetro do método receba ele mesmo e não vai mudar o atributo da classe. Nesse caso, você é obrigado a usar this para orientar o compilador:
public setNome(String nome) {
this.nome = nome;
}
Sendo assim, ao invés de ficar pensando se usa ou não this, você pode assumir usar this
em todos os casos. Escreve um pouco mais, mas mantém um padrão no seu código e uma uniformidade.
Ficou claro?