Operador final

Olá pessoal sou iniciante na linguagem Java, acabei de me cadastrar no GUJ. E aí vai minha primeira dúvida…
(primeira de muitas que irão surgir…rs)

O que faz o operador “final” na definição de classes, métodos e atributos??
Como ele funciona??
por exemplo:

public final class Teste{}

public final void teste();

private final int teste=0;

valeu pessoal…obrigado pela atenção…

significa que não podera ser alterada… por exemplo:
qdo eu tenho

isso quer dizer q a minha variavel sera constante, ou seja não irei alterala… ja qdo eu tenho uma classe final… significa q ela não pode ser herdada… por exemplo a classe String é final… pq naum tem mais implementação pra ela, se vc achar alguma pode mandar seu curriculo pra sun!!! blzinha???
flw!!! :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen:

Na verdade, o significado de final varia de contexto para contexto, mas a idéia principal é que recursos final não pode ser alterados :stuck_out_tongue:

Uma classe final não pode ser transformada em subclasse.
Uma variável final não pode ser modificada quando a ela tiver sido atribuído um valor.
Um método final não pode ser sobrescrito

Na verdade, é para que ninguém possar formar uma subclasse a partir da sua classe.

Hum, ‘não pode ser modificada depois de ter sido atribuída’ não é bemm assim. O objetivo de uma ‘variável’ final, garante que após a instanciação do objeto, ela não será modificada.

[quote=Leozin]Uma variável final não pode ser modificada quando a ela tiver sido atribuído um valor.
[/quote]Isso depende do tipo de variável.
Se for uma variavel primitiva (int, double, float, char, etc…) você não consegue alterar.
mas se for uma referência a um objeto você até consegue alterar o valor, mas não a sua referencia.
Exemplo:

private final Data d = new Date();

private void alteraData(){
 // não me lembro qual o método real, mas use os métodos verdadeiros para fazer este exemplo.
 System.out.println(d.getHours());
 d.setHours(20);
 System.out.println(d.getHours());
}

Ou seja, o valor que a variavel se referencia pode ser alterada, mas a referência não. logo:

private final Data d = new Date();

private void alteraData(){
 d = new Date() // Errooo!!!
}

final aplicado em classes significa de uma maneira resumida que você não poderá mais “melhor” tal classe, ou seja extender suas funcionalidades. Também é aplicado em classes por motivo de segurança, imagine alguém criando uma subclasse de String e alterando seu comportamento drasticamente, o mundo nunca mais seria o mesmo :XD: .
O final aplicado em métodos significa que o método não poderá ser sobreposto.
E finalmente final aplicado em variáveis quer dizer que uma vez sua variável tenha um valor atribuido a ela, este valor não poderá mais ser alterado.
:mrgreen: []´s

Obrigado pessoal…agora ficou claro pra min o uso do operador final…
até a próxima…

valeu mesmo…