Java Basics sobre palavra -chave final
Pergunta
A palavra -chave final pode ser usada para um método?
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
- Quando um método é final, ele "pode" ser inlinado.
- 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.