Tem alguma diferença eu fazer isso ou é só uma boa prática?
@Override
    public String toString(){
        return "Curso : "+this.nome;  ...
    }
disso:
@Override
    public String toString(){
        return "Curso : "+this.getNome();  ...
    }
        Tem alguma diferença eu fazer isso ou é só uma boa prática?
@Override
    public String toString(){
        return "Curso : "+this.nome;  ...
    }
disso:
@Override
    public String toString(){
        return "Curso : "+this.getNome();  ...
    }
        nenhuma diferenca.. na verdade, eu usaria o atributo direto.. ja to dentro da classe.. a nao ser que o metodo tivesse alguma logica extra.
O uso de getNome seria indicado caso você faça uma validação no atributo antes de devolvê-lo.
Caso haja uma validação como por exemplo verificar se o nome for nulo e caso seja retornar uma string em branco o código é valido.
A vantagem dessa abordagem é que a validação fica centralizada e caso haja mudanças existe apenas um ponto de alteração. Então é uma boa prática.
Mas na maioria dos casos não haveria diferenças.