Pergunta

A palavra -chave final pode ser usada para um método?

Foi útil?

Solução

Absolutamente! o final A palavra -chave pode ser aplicada a praticamente qualquer coisa, em cada caso, o que significa "você não muda mais isso".

Aqui está o que isso significa quando aplicado a ...

uma variável: Você simplesmente não pode atribuir à variável um novo valor (tornando -o um constante, é claro)

um método: Você não pode reimplementar (ou seja, substituir) este método em uma subclasse

uma aula: Você não pode definir uma subclasse

Em cada caso, estamos simplesmente indicando: Uma vez que essa coisa for declarada, esse é o último valor (ou implementação) que você verá.

Outras dicas

Sim, é possível declarar um método como final. Isso significa que um método não pode ser substituído por suas subclasses.

A partir de As especificações do idioma java, terceira edição, Seção 8.4.3.3:

Um método pode ser declarado final para impedir que as subclasses substituam ou oculam. É um erro de tempo de compilação tentar substituir ou ocultar um método final.

Para mais informações, o Escrevendo aulas e métodos finais página de Os tutoriais de Java tem mais informações.

Sim.

Você pode fazer um método final

public class A {
   public static final void f() {
      System.out.println("test");
   }
}

Normalmente existem duas razões para fazer um método final

  1. Quando um método é final, ele "pode" ser inlinado.
  2. Quando um método é final, o método é impossível de substituir.

Com certeza pode. Tornando impossível substituir.

Claro, confira A palavra final sobre a palavra -chave final

public abstract class AbstractBase
{
    public final void performOperation()    // cannot be overridden
    {
        prepareForOperation();
        doPerformOperation();   
    }

    protected abstract void doPerformOperation();    // must override
}

Sim.

Um método final não pode ser substituído por subclasses. Isso é frequentemente usado para impedir que as subclasses alterem comportamentos cruciais da classe.

Como uma nota para as outras respostas. Você posso Use final. Na prática, raramente vejo pessoas usando e não sei por que.

Muitos do código que escrevo nos dias de hoje se destinam a ambientes multithread e eu tendem a tornar a classe final um imutável (se é uma classe de valor) para que seja o ThreadSafe.

O problema de marcar alguns métodos como final (e não outros) é que você está afirmando que há algo especial nesse método e nada de especial nos outros. Isso raramente é o que as pessoas realmente significam na minha experiência.

Se uma aula se destina à herança, você precisará mantê-la limpa e mantê-la pequena para evitar efeitos colaterais indesejados. Tudo isso depende se você está escrevendo código para você e sua equipe ou se está escrevendo para um público mais amplo - ou seja, uma API pública em um projeto de código aberto ou em um projeto comercial.

Sim, a palavra -chave final pode ser usada para um método. Isso preservará a imutabilidade. Ele impede que os métodos sejam quebrados. Por exemplo, suponha que a implementação de algum método da classe X assuma que o método m se comportará de uma certa maneira. Declarar x ou m como final impedirá que as classes derivadas redefinam M de maneira a fazer com que X se comporte incorretamente.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top