Uso da palavra reservada final
Olá amigos, sou iniciante em java e estou com uma dúvida,gostária de saber para que server a palavra reservada "final", e quando usala.
EX: public static final int[b]
Obrigado. :roll: [/b]
Tiago Martins
Curtidas 1
Melhor post
Daniel Martins
09/04/2009
Depende de onde a palavra final é utilizada. Por exemplo, se for utilizada numa classe, isso indica que ela não poderá ser estendida:
Algo semelhante acontece se utilizamos a palavra final em um método, indicando que o método não poderá ser sobrescrito:
Se a palavra for usada em uma variável, isso indica que tal variável na verdade será uma constante, pois não será permitido que se modifique o valor da mesma uma vez que um valor seja atribuído:
Existem outros usos da palavra-chafe final que não irei explicar por se tratar de assuntos mais avançados.
Mas é isso aí... para ficar mais fácil de entender, eu recomendo que você compre um livro sobre Java Básico, onde essas e outras questões são abordadas em detalhes. Procure aqui no fórum sobre tais livros.
[]s!
public final class MyClass {}
// Isso não é permitido
public class MyOtherClass extends MyClass {}
public class MyClass {
public final void foo() {}
}
public class MyOtherClass extends MyClass {
public void foo() {} // Não é permitido sobrescrever o método
}
public class MyClass {
public void foo() {
final int teste = 0;
teste++; // Não é permitido
}
}
// Ou...
public class MyClass {
private final int teste;
public MyClass() {
teste = 10; // Ok, pois inicializamos o valor no construtor.
}
public void foo() {
teste++; // Não é permitido...
}
}
// Ou...
public class MyClass {
private final int teste = 10;
public MyClass() {
teste = 10; // Não é permitido...
}
public void foo() {
teste++; // Não é permitido...
}
}
GOSTEI 2
Mais Respostas
Gabriel Millian
09/04/2009
Quando usada na definição de uma variável, significa que a variável não pode assumir outro valor, tornando-se uma constante.
http://java.sun.com/docs/books/jls/third_edition/html/typesValues.html#4.12.4
quando usada na definição de um método, significa que o método não poderá ser sobrescrito.
http://java.sun.com/docs/books/jls/third_edition/html/classes.html#8.4.3.3
quando usada na definição de uma classe, significa que a classe não vai admitir herança.
http://java.sun.com/docs/books/jls/third_edition/html/classes.html#8.1.1.2
GOSTEI 1
Tiago Martins
09/04/2009
Brigadão irmão, ficou clarissimo. :?
GOSTEI 0
Camilo Lopes
09/04/2009
[b]final[/b] que dizer imutavel se vc declarar uma class como final ela nao pode ser extends, se vc declarar um metodo como final ele nao pode ser subcrito, se vc declarar uma variavel como final o seu valor nao pode ser alterado.. percebe o final faz? proteção.... apenas.. usar final quando tiver certeza que nao vai existir algo mais especifico para sua class ou metodo... a class String ela é final.. por isso que falamos Strings sao imutaveis..
GOSTEI 0
Camilo Lopes
09/04/2009
Ups, näo é täo fácil assim
[quote="camilolopes"]...
a class String ela é final.. por isso que falamos Strings sao imutaveis..
A String é imutável pelo fato de näo ter como mudar o seu conteúdo, mas näo por causa da classe ser final!
Exemplo:
public final class Letras {
private final char[] value;
public Letras(String str) {
value = str.toCharArray();
}
public void toUpperCase() {
for (int i = 0; i < value.length; i++) {
value[i] = Character.toUpperCase(value[i]);
}
}
@Override
public String toString() {
return new String(value);
}
}GOSTEI 0