Buscar

java_15

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 8 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 8 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

Prévia do material em texto

1
Classes internasClasses internas
Java 2 Standard Edition
Helder da Rocha
www.argonavis.com.br
2
8. Classes internas
ƒ Classes dentro de classes
ƒ Classes anônimas
ƒ Classes dentro de métodos
ƒ Classes internas estáticas
3
Classes internas
ƒ Classes dentro de classes
ƒ Podem ser private, protected, public ou package-private
ƒ exceto as que aparecem dentro de métodos
ƒ Podem ser estáticas: 
ƒ Externa.Interna
ƒ Podem ser "de instância":
ƒ Externa e = new Externa();
Externa.Interna ei = e.new Externa.Interna();
ƒ Podem ser locais (dentro de métodos)
ƒ As locais podem ter ou não, um nome (anônimas)
class Externa {private class Interna {public int campo;public void metodoInterno() {...}}public void metodoExterno() {...}}
4
Classes estáticas
ƒ Declaradas como static
ƒ idênticas às classes externas
ƒ Classe externa age como um pacote para várias classes internas 
estáticas: Externa.Coisa, Externa.InternaUm
ƒ Compilador gera arquivo Externa$InternaUm.class
class Externa {private static class InternaUm {public int campo;public void metodoInterno() {...}}public static class InternaDois extends InternaUm {public int campo2;public void metodoInterno() {...}}public static interface Coisa {void existe();}}
5
Classes "de instância"
ƒ São membros do objeto, como métodos e campos de dados
ƒ Requerem que objeto exista antes que possam ser usadas.
ƒ Externamente use referencia.new para criar objetos
ƒ Referências sempre se referem à classe externa
ƒ Use NomeDaClasse.this para acessar campos internos
class Externa {public int campoUmprivate class Interna {public int campoUm;public int campoDois;public void metodoInterno() {this.campoUm = 10; // Externa.campoUmInterna.this.campoUm = 15; }}public static void main(String[] args){Interna e = (new Externa()).new Interna();}}
6
Classes dentro de métodos
ƒ Servem para tarefas "descartáveis" já que deixam de existir 
quando o método acaba
ƒ Têm o escopo de variáveis locais
ƒ Objetos criados, porém, podem persistir além do escopo do método, 
se retornados
ƒ Se usa variáveis locais do método essas variáveis devem ser 
constantes (declaradas final)
public Multiplicavel calcular(final int a, final int b) {class Interna implements Multiplicavel {public int produto() {return a * b; }}return new Interna();}public static void main(String[] args){Multiplicavel mul = (new Externa()).calcular(3,4);int prod = mul.produto();}
7
Classes anônimas
ƒ Classes usadas dentro de métodos freqüentemente servem 
apenas para criar um objeto uma única vez
ƒ Há uma sintaxe que dispensa o nome da classe, nesses casos
ƒ Interna i = new SuperClasse() { implementação };
ƒ SuperClasse, acima, pode ser Object, alguma superclasse de Interna 
ou uma interface (mais comum)
ƒ Compilador gera arquivo Externa$1.class, Externa$2.class, ...
public Multiplicavel calcular(final int a, final int b) {return new Multiplicavel() {public int produto() {return a * b; }};}public static void main(String[] args){Multiplicavel mul = (new Externa()).calcular(3,4);int prod = mul.produto();}
Compare com parte em
preto e vermelho do
slide anterior!
8
Para que servem classes internas?
ƒ Mais reutilização
ƒ Recurso poderoso quando combinado com interfaces e 
herança
ƒ Tipo de herança de implementação pode ser obtida 
ƒ classes internas podem estender qualquer classe e os métodos 
internos podem ser chamados pelos métodos externos
ƒ "Ponteiros seguros" apontando para métodos localizados 
em classes internas
ƒ Flexibilidade para desenvolver objetos descartáveis
	8. Classes internas
	Classes internas
	Classes estáticas
	Classes "de instância"
	Classes dentro de métodos
	Classes anônimas
	Para que servem classes internas?

Outros materiais