GARANTIR DESCONTO

Fórum Uso da palavra reservada "final" #565425

09/04/2009

0

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

Tiago Martins

Responder

Post mais votado

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:
public final class MyClass {}

// Isso não é permitido
public class MyOtherClass extends MyClass {}
Algo semelhante acontece se utilizamos a palavra final em um método, indicando que o método não poderá ser sobrescrito:
public class MyClass {
    public final void foo() {}
}

public class MyOtherClass extends MyClass {
    public void foo() {} // Não é permitido sobrescrever o método
}
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:
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...
    }
}
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!

Daniel Martins

Daniel Martins
Responder

Gostei + 2

Mais Posts

09/04/2009

Gabriel Millian

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
Responder

Gostei + 1

09/04/2009

Tiago Martins

Brigadão irmão, ficou clarissimo. :?
Responder

Gostei + 0

09/04/2009

Camilo Lopes

[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..
Responder

Gostei + 0

09/04/2009

Camilo Lopes

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);
    }
}
se se remover o metodo toUpperCase, Letras seria imutável. []]]
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar