Buscar

Semana 2 - Atributos e métodos finais

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 19 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 19 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 19 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Atributos e métodos finais
Apresentação
Na programação de computadores, são utilizadas classes de objetos, que armazenam determinadas 
características e comportamentos — em outras palavras, atributos e métodos. Os atributos são as 
propriedades dos objetos computacionais. Já os métodos são as ações ou funções que esse objeto 
pode realizar.
Por exemplo, se um objeto fosse uma motocicleta, atributos possíveis seriam seu modelo, ano de 
fabricação, quantidade de cilindradas e cor. Os métodos da motocicleta seriam andar ou correr, etc.
Os atributos e métodos podem ser sobrepostos ou herdados entre objetos, o que é uma função útil 
em muitas aplicações. Nos casos em que não se quer que isso ocorra, na linguagem de 
programação Java é possível utilizar a palavra-chave “final”. Atributos e métodos finais são 
utilizados para garantir que determinada implementação não tenha modificações, isto é, para 
garantir a sua imutabilidade.
Nesta Unidade de Aprendizagem, você vai estudar atributos e métodos finais, assim como sua 
aplicação.
Bons estudos.
Ao final desta Unidade de Aprendizagem, você deve apresentar os seguintes aprendizados:
Reconhecer método final.•
Definir atributo final.•
Construir uma aplicação utilizando atributos e métodos finais.•
Infográfico
Quando atributos ou métodos são declarados como finais, eles passam a ser imutáveis. Isso quer 
dizer que eles deixam de permitir herança entre as classes de uma aplicação. No caso específico 
dos atributos, se você tentar modificá-los depois de a declaração da classe ser inicializada, o 
compilador gerará um erro como “não pode atribuir valor ao atributo final”. E, se tentar acessar o 
valor de um atributo final antes que ele seja inicializado, a mensagem de erro será algo como “o 
atributo pode não ter sido inicializado”.
Essa funcionalidade é muito utilizada para garantir que o comportamento das classes não seja 
modificado em diferentes tipos de dados, como Integer, Double e Math. Neste Infográfico, você vai 
ver um exemplo de utilização de atributo e método final em uma mesma classe.
Aponte a câmera para o 
código e acesse o link do 
conteúdo ou clique no 
código para acessar.
https://statics-marketplace.plataforma.grupoa.education/sagah/e21b4eed-0439-4fa4-bbdc-7ed436ad549e/410a5d9d-fa8b-4c5e-b605-7d01ecfe8284.png
Conteúdo do livro
Qualquer que seja a razão, em Java, com o uso da palavra-chave "final", é fácil impedir que um 
método seja sobreposto ou uma classe seja herdada.
Acompanhe um trecho do livro Java para iniciantes, que traz uma abordagem sobre o uso da 
palavra-chave "final". O livro servirá de base teórica para esta Unidade de Aprendizagem. Inicie o 
estudo pelo tópico "Usando final" e finalize em "Pergunte ao especialista".
Boa leitura.
Atualizado para JAVA SE 8 (JDK 8)
Java
para iniciantes
Crie, compile e execute programas Java rapidamente
Herbert Schildt
Catalogação na publicação: Poliana Sanchez de Araujo – CRB 10/2094
S334j Schildt, Herbert.
 Java para iniciantes : crie, compile e execute programas 
 Java rapidamente [recurso eletrônico] / Herbert Schildt ; 
 tradução: Aldir José Coelho Corrêa da Silva ; revisão 
 técnica: Maria Lúcia Blanck Lisbôa. – 6. ed. – Porto Alegre : 
 Bookman, 2015.
 Editado como livro impresso em 2015.
 ISBN 978-85-8260-337-6
 1. Linguagem de programação - Java. I. Título. 
CDU 004.438Java
O autor
O autor de best-sellers Herbert Schildt escreve incansavelmente sobre programação 
há quase três décadas e é uma das principais autoridades na linguagem Java. Seus 
livros de programação venderam milhões de cópias no mundo inteiro e foram tra-
duzidos para diversos idiomas. É autor de vários livros sobre Java, incluindo Java: 
The Complete Reference, Herb Schildt’s Java Programming Cookbook e Swing: A 
Beginner’s Guide. Ele também escreveu sobre C, C++ e C#. Embora tenha interesse 
em todas as áreas da computação, seu foco principal são as linguagens de progra-
mação, incluindo compiladores, interpretadores e linguagens de controle robótico. 
Também tem grande interesse na padronização de linguagens. Schildt tem gradua-
ção e pós-graduação pela Universidade de Illinois. Seu site é www.HerbSchildt.com.
O editor técnico
Dr. Danny Coward trabalhou em todas as edições da plataforma Java. Ele conduziu 
a definição dos Java Servlets para a primeira versão da plataforma Java EE e para 
além dela, os serviços web para a plataforma Java ME, e a estratégia e planejamento 
de Java SE 7. Fundou a tecnologia JavaFX e, mais recentemente, projetou o maior 
acréscimo feito ao padrão Java EE 7, a API Java WebSocket. Da codificação em Java 
ao projeto de APIs com especialistas da indústria e ao trabalho por vários anos como 
executivo do Java Community Process, ele adquiriu uma perspectiva singularmente 
ampla de vários aspectos da tecnologia Java. Além disso, é autor de JavaWebSo-
cket Programming e de um livro ainda a ser publicado sobre Java EE. Dr. Coward 
tem graduação, mestrado e doutorado em Matemática pela Universidade de Oxford.
256 Java para Iniciantes
Usando final
Mesmo com a sobreposição de métodos e a herança sendo tão poderosas e úteis, 
podemos querer evitar que ocorram. Por exemplo, podemos ter uma classe que en-
capsule o controle de algum dispositivo de hardware. Além disso, essa classe pode 
dar ao usuário a oportunidade de inicializar o dispositivo, fazendo uso de informa-
ções privadas. Nesse caso, não vamos querer que os usuários de nossa classe possam 
sobrepor o método de inicialização. Qualquer que seja a razão, em Java, com o uso 
da palavra-chave final, é fácil impedir que um método seja sobreposto ou uma classe 
seja herdada.
A palavra-chave final impede a sobreposição
Para impedir que um método seja sobreposto, especifique final como modificador no 
início de sua declaração. Métodos declarados como final não podem ser sobrepostos. 
O fragmento a seguir ilustra final:
class A {
 final void meth() {
 System.out.println("This is a final method.");
 }
}
class B extends A {
 void meth() { // ERRO! não pode sobrepor.
 System.out.println("Illegal!");
 }
}
Já que meth( ) é declarado como final, não pode ser sobreposto em B. Se você tentar 
fazê-lo, ocorrerá um erro de tempo de compilação.
A palavra-chave final impede a herança
Você pode impedir que uma classe seja herdada precedendo sua declaração com 
final. A declaração de uma classe como final também declara implicitamente todos 
os seus métodos como final. Como era de se esperar, é inválido declarar uma classe 
como abstract e final, uma vez que uma classe abstrata é individualmente incomple-
ta e depende de suas subclasses para fornecer implementações completas.
Aqui está um exemplo de uma classe final:
final class A {
 // ...
}
// A classe seguinte é inválida.
class B extends A { // ERRO! não pode criar uma subclasse de A
 // ...
}
Como os comentários sugerem, é inválido B herdar A, já que A é declarada como 
final.
Capítulo 7 Herança 257
Usando final com membros de dados
Além dos usos que acabei de mostrar, final também pode ser aplicada a variáveis mem-
bros para criar o que seriam constantes nomeadas. Se você preceder o nome da variável 
de uma classe com final, seu valor não poderá ser alterado durante todo o tempo de vida 
do programa. Certamente, você pode dar a essa variável um valor inicial. Por exemplo, 
no Capítulo 6, uma classe simples de gerenciamento de erros chamada ErrorMsg foi 
mostrada. Essa classe mapeava um string legível por humanos para um código de erro. 
Aqui, a versão original da classe será melhorada pelo acréscimo de constantes final, 
que representam os erros. Agora, em vez de passar para getErrorMsg( ) um número 
como 2, você pode passar a constante int nomeada DISKERR.
// Retorna um objeto String.
class ErrorMsg {
 // Códigos de erro.
 final int OUTERR = 0;
 final int INERR = 1;
 final int DISKERR = 2;
 final int INDEXERR = 3;
 String msgs[] = {
 "Output Error",
 "Input Error",
 "Disk Full",
 "Index Out-Of-Bounds"};
 // Retorna a mensagem de erro.
 String getErrorMsg(int i) {
 if(i >=0 & i < msgs.length)
return msgs[i];
 else
return "Invalid Error Code";
 }
}
class FinalD {
 public static void main(String args[]) {
 ErrorMsg err = new ErrorMsg();
 System.out.println(err.getErrorMsg(err.OUTERR));
 System.out.println(err.getErrorMsg(err.DISKERR));
 }
}
Observe como as constantes final são usadas em main( ). Uma vez que são membros 
da classe ErrorMsg, devem ser acessadas via um objeto dessa classe. É claro que 
também podem ser herdadas pelas subclasses e acessadas diretamente dentro delas.
Por uma questão estilística, muitos programadores de Java usam identificado-
res maiúsculos em constantes final, como no exemplo anterior, mas essa não é uma 
regra fixa.
Declara constantes final.
Usa constantes final.
Dica do professor
Para que atributos e métodos não sejam sobrepostos ou herdados entre objetos, utiliza-se a 
palavra-chave “final”. Atributos e métodos finais garantem a imutabilidade dos dados a que forem 
relacionados, ou seja, eles só podem ser inicializados uma vez, direto na declaração da classe ou no 
método construtor. Quando “final” é aplicado a uma classe, entende-se que ela chegou a um nível 
máximo de especialização e não poderá mais ser especializada, ou seja, a classe deixa de poder 
repassar herança para outra.
Uma das vantagens do uso da palavra-chave "final" em métodos é a melhoria no desempenho de 
execução das aplicações, já que as chamadas de métodos “final” são substituídas pelo código que 
está na definição do método. Assim, o compilador substitui a chamada desse método pelo seu 
código, o que evita desvio de fluxo.
Nesta Dica do Professor, você vai ver um exemplo de aplicação de atributos e métodos finais 
utilizando o IDE NetBeans.
Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.
https://fast.player.liquidplatform.com/pApiv2/embed/cee29914fad5b594d8f5918df1e801fd/7aa7bd09ee40b4c5c3176628b3241538
Exercícios
1) Os atributos e métodos finais são úteis em diferentes tipos de sistemas e aplicações, com 
uma função específica.
Nesse contexto, assinale a alternativa que descreve corretamente o objetivo do uso da 
palavra-chave "final" na API Java.
A) Criar encapsulamento.
B) Dar visibilidade pública aos membros da classe.
C) Deixar os membros visíveis em sua classe e subclasses.
D) Deixar o membro imutável.
E) A palavra-chave "final" é utilizada apenas em classe.
2) Os atributos são as propriedades dos objetos computacionais, representados na API Java 
por classes. Em relação aos atributos de uma classe, a palavra-chave "final" é usada para uma 
função específica.
Nesse contexto, assinale a alternativa correta.
A) Declarar nomes do tipo Integer.
B) Declarar uma constante.
C) Declarar atributos estáticos.
D) Declarar atributos que receberam valor de ponto flutuante.
E) Não declarar dois ou mais atributos com o mesmo nome.
Os métodos são as ações ou funções que um objeto pode realizar. Em relação aos métodos 
de uma classe, a palavra-chave "final" é usada para uma função específica.
Nesse contexto, veja as afirmações a seguir:
3) 
 
I. A palavra-chave "final" impede que um método seja sobreposto. 
II. A palavra-chave "final" garante que um método seja sobreposto. 
III. A palavra-chave "final" impede que um método seja visível para outras classes. 
IV. A palavra-chave "final" informa que o método é sem retorno. 
V. A palavra-chave "final" impede que um método seja herdado por outras classes.
Está correto o que se afirma em:
A) I e V.
B) II, III e IV.
C) I, III e IV.
D) III e IV.
E) II e III.
Atributos e métodos finais podem ser utilizados em muitos tipos de aplicativos, seja 
naqueles que executam cálculos, que definem áreas de objetos gráficos ou que armazenam 
informações privadas.
Nesse sentido, observe os trechos de códigos-fonte que utilizam a palavra-chave "final" e os 
relacione com suas respectivas descrições:
 
I. private final int num = 2;
II. private final int num1 = 6; 
private final int num2 = 4; 
private int result; 
public final void(){ result = num1 + num2; }
III. static private final double pi = 3.1416; 
private double raio = 2; 
private double area; 
public void setRaio(){ this.raio = raio; 
area = pi * (raio*raio);
( ) Calcula a área do círculo cujo raio é 2. 
( ) Calcula a soma entre num1 e num2. 
( ) Declara uma constante com modificador de acesso privado recebendo um valor 2.
4) 
Agora, assinale a alternativa em que é apresentada a ordem correta.
A) I, II, III.
B) III, I, II.
C) III, II, I.
D) I, III, II.
E) II, III, I.
O uso da palavra-chave "final" no desenvolvimento de um código-fonte deve obedecer à sintaxe 
da linguagem de programação utilizada. Há locais específicos na estrutura do código em que a 
palavra "final" deve ser inserida para que seja especificada para atributos, métodos ou para a classe 
do objeto.
Nesse contexto, analise o código-fonte a seguir:
5) 
Agora, veja as afirmações a seguir sobre o código apresentado:
I. A classe Pessoa tem um método final. 
II. Os atributos da classe Pessoa foram declarados como constantes. 
III. A classe Homem está herdando os membros da classe Pessoa. 
IV. Se instanciarmos a classe Pessoa, chamarmos o método calculaIdade e passarmos os valores 
referentes a ano de nascimento e ano atual por parâmetros no método, teremos como resultado a 
idade. 
V. Se instanciarmos a classe Homem, chamarmos o método calculaIdade e passarmos os valores 
referentes a ano de nascimento e ano atual por parâmetros no método, teremos como resultado a 
idade.
Está correto o que se afirma em:
A) I, II e III.
B) II e IV.
C) II e III.
D) II, III e IV.
E) I, III e IV.
Na prática
Apesar de funcionalidades como herança e sobreposição de atributos e métodos serem práticas e 
poderosas, há casos em que elas precisam ser evitadas, como, por exemplo, uma classe que 
contenha informações privadas e que tenha o controle de inicialização de determinado hardware de 
armazenamento. Nesse caso, você pode não querer que os usuários dessa classe consigam 
sobrepor o método de inicialização.
Confira, Na Prática, o caso de uma fábrica de jogos digitais que emprega a palavra-chave "final" 
para impedir a sobreposição de atributos e métodos.
Aponte a câmera para o 
código e acesse o link do 
conteúdo ou clique no 
código para acessar.
https://statics-marketplace.plataforma.grupoa.education/sagah/8cc2a5db-522d-4628-a579-0113c3e429da/e2340b69-f85a-4482-8237-ccb8e3fa8e89.png
 
Saiba +
Para ampliar o seu conhecimento a respeito desse assunto, veja abaixo as sugestões do professor:
Imutabilidade e código limpo
Neste artigo, você vai conhecer alguns exemplos de como tornar atributos e métodos imutáveis 
utilizando a API Java, desde as classes String e Wrappers até o uso das palavras-chave "private" e 
"final".
Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.
Métodos e classes final
Para conhecer mais conceitos e exemplos do uso da palavra-chave "final" em Java, consulte o texto 
“Métodos e classes final”, nas páginas 569 e 570 do livro Android: como programar. Ele está 
disponível na Biblioteca A, no link a seguir.
Conteúdo interativo disponível na plataforma de ensino!
Final aplicado em classes, métodos e variáveis
Neste vídeo, você vai ver um exemplo prático de inclusão da palavra-chave "final" em uma nova 
classe na API Java. São apresentados classes, métodos e variáveis (atributos) relacionados a 
animais. Não se esqueça de ativar as legendas em português.
Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.
Atributos e a palavra-chave "final"
https://www.devmedia.com.br/o-reflexo-da-imutabilidade-no-codigo-limpo/30697
https://www.youtube.com/embed/r9CMJZ4T__8
Neste vídeo, você vai ver um pouco mais os conceitos de Java relacionados a atributos finais, assim 
como um exemplo prático de inclusão da palavra-chave "final"em uma classe que trata de números 
inteiros, dados pessoais, alunos de uma escola, etc.
Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.
https://www.youtube.com/embed/rYaWPpVJH4U

Continue navegando