A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Capítulo 1. Classes internas  Classe interna  Instância da classe interna  Referências na classe interna  Modificadores de membros  Classe interna.

Apresentações semelhantes


Apresentação em tema: "Capítulo 1. Classes internas  Classe interna  Instância da classe interna  Referências na classe interna  Modificadores de membros  Classe interna."— Transcrição da apresentação:

1 Capítulo 1

2 Classes internas  Classe interna  Instância da classe interna  Referências na classe interna  Modificadores de membros  Classe interna local  Classe interna anônima  Classe interna estática  Classes aninhadas 2

3 Classe interna public class ClasseExterna { public int valor = 10; public void calculaValor() {....... } public class ClasseInterna { private String temp; public void calcTemp() {... } } } 3

4 Classe interna  Na aplicação principal... ClasseExterna objExt = new ClasseExterna(); System.out.println(objExt.valor); objExt.calculaValor(); ClasseExterna.ClasseInterna objInt; objInt = objExt.new ClasseInterna(); 4

5 Classe interna  Uma classe interna é tratada como um dos membros da classe externa.  Como tal, a classe interna pode possuir qualquer um dos modificadores de acesso abaixo: public protected Default (sem modificador) private 5

6 Classe interna (exemplo) public class AlunoService { public void gravarAluno(int matricula, String nome, String email) {....... } public void enviarEmailAoAluno(String nome, String email) { Thread thread = new EmailAoAlunoThread(); thread.start(); } private class EmailAoAlunoThread extends Thread { public void run() {....... } 6

7 Classe interna (exemplo)  Na aplicação principal... public class Inicio { public static void main(String args[]) { AlunoService service = new AlunoService(); /* Grava os dados do aluno na base de dados. */ service.gravarAluno(1022, “Manuel”, “manuel@portugal.com”); /* Envia um email ao aluno de forma assíncrona (thread). */ service.enviarEmailAoAluno(“Manuel”, “manuel@portugal.com”); } 7

8 Classe interna local public class ClasseExterna { public int membroExterno = 3; public void calculaValor() { final int local = 5; class ClasseLocal { private int membroInterno = 8; public int calcTemp() { return membroExterno * memboInterno* local; } } ClasseLocal local = new ClasseLocal(); System.out.println(local.calcTemp()); } } 8

9 Classe interna local  Uma classe interna local pode ser utilizada apenas dentro do método em que foi criada.  Desta forma, uma classe interna local não deve possuir modificadores de acesso (public, private, etc).  Uma classe interna local só pode utilizar uma variável local ao método onde ela se encontra se a variável local for uma constante (final). 9

10 Classe interna anônima public class ClasseExterna { public void calculaValor() { TipoX temp = new TipoX() { public void metodo1() {... } }; temp.metodo1(); } }... onde TipoX é uma interface, classe abstrata ou classe comum previamente declarada com o metodo1(); 10

11 Classe interna anônima (exemplo) public class CadastroAluno extends JFrame { private JButton btnOK = new JButton(); private JPanel pnlRaiz = (JPanel) getContentPane(); public CadastroAluno() { btnOk.setBounds(100, 80, 60, 30); btnOk.setText(“Clique aqui”); btnOk.addActionListener( new ActionListener() { void actionPerformed(ActionEvent e) { JOptionPane.showMessageDialog(null, “Olá!”); } } ); pnlRaiz.add(btnOk); } 11

12 Classe interna anônima  Ao criar uma classe anônima, estamos implementando ou estendendo uma classe ou interface para uso imediato;  Ao criar uma classe anônima, podemos: Implementar uma interface com os seus métodos; Estender uma classe abstrata implementando os seus métodos abstratos; Estender uma classe comum sobrescrevendo algum de seus métodos. 12

13 Classe interna anônima  Forma Geral public inteface InterfaceExemplo { public void metodo1(); public void metodo2(); } InterfaceExemplo variavel = new InterfaceExemplo() { public void metodo1() {..... } public void metodo2() {..... } }; variavel.metodo1(); variavel.metodo2(); 13... dentro de algum método

14 Classe interna estática public class ClasseExterna { public static int valor = 10; public static void calculaValor() {....... } public static class ClasseInterna { private String temp; public void calcTemp() {... } } } 14

15 Classe interna estática  Na aplicação principal... ClasseExterna objExt = new ClasseExterna(); System.out.println(ClasseExterna.valor); ClasseExterna.calculaValor(); ClasseExterna.ClasseInterna objInt; objInt = new ClasseExterna.ClasseInterna(); Não é necessário criar instância 15

16 Classe interna estática  Uma classe interna estática é semelhante a uma classe comum, sendo sua classe externa semelhante a um package.  Geralmente uma classe interna estática é utilizada como uma classe pública auxiliar de sua classe externa. 16

17 Classes aninhadas  Embora seja pouco recomendado, as classes podem ser “internalizadas” em diversos níveis public class Alpha { public void metodo1() { System.out.println(“Metodo da classe Alpha"); } protected class Beta { public void metodo2() { System.out.println(“Metodo da classe Beta"); } private class Gama { public void metodo3() { System.out.println(“Metodo da classe Gama"); } 17

18 Exercício (parte 1)  Crie uma classe chamada Carro contendo uma classe interna pública e estática chamada Roda;  A classe interna Roda deverá possuir 2 atributos: aro (int) e ligaLeve (boolean) e seus respectivos métodos get e set. Também deverá conter um método construtor público contendo ambos os atributos; 18

19 Exercício (parte 2)  A classe externa Carro deverá possuir 4 atributos: rodaDianteiraEsquerda (tipo Roda); rodaDianteiraDireita (tipo Roda); rodaTraseiraEsquerda (tipo Roda); rodaTraseiraDireita (tipo Roda).... e seus respectivos métodos get e set;  A classe externa Carro também deverá possuir um método construtor que permitirá inicializar o carro com os atributos descritos acima; 19

20 Exercício (parte 3)  Crie uma classe CarroStart contendo o método main() que deverá criar uma instância da classe Carro assinalando nesta 4 instâncias da classe Roda e, em seguida exiba os dados da instância da classe Carro conforme abaixo: RodaAroLiga-leve ------------------------------------------------- dianteira-esquerda17Sim dianteira-direita17Sim traseira-esquerda36Não traseira-direita36Não 20


Carregar ppt "Capítulo 1. Classes internas  Classe interna  Instância da classe interna  Referências na classe interna  Modificadores de membros  Classe interna."

Apresentações semelhantes


Anúncios Google