Introdução às classes internas
Uma classe definida em outra classe é chamada de classe interna
Classe interna do membro
1..NOVO Para criar uma classe interna de membro, você deve primeiro criar uma instância da classe externa e depois criar um objeto da classe interna através do .New
2..Esto você pode acessar todas as propriedades e métodos de classes externas através do nome da classe. Esta da classe externa.
classe pública test1 {string name = "asnd"; public static void main (string [] args) {test1 test1 = new test1 (); Interno minner = test1.new interno (); minner.print (); } void show () {System.out.println ("show"); } classe pública interna {string name = "123"; private void print () {show (); System.out.println (nome); // print 123 system.out.println (test1.this.name); // imprima asnd}}}Classe interna anônima
Uma classe sem nome também criará um objeto ao criar uma classe.
Você só precisa usar a classe uma vez para usar classes internas anônimas
Arquivo de arquivo = novo arquivo ("d: /cc.txt") {@Override public boolean delete () {System.out.println ("Não exclua Y/N"); Scanner input = new Scanner (System.in); String str = input.Next (); if (str.equals ("y")) {return super.Delete (); } System.out.println ("Delete falhou"); retornar falso; }}; file.Delete (); }Objeto anônimo
O objeto só precisa ser acessado uma vez.
novo thread () {@Override public void run () {System.out.println ("thread start!"); tente {thread.sleep (2000); System.out.println ("encadeamento final!"); } catch (Exceção e) {e.printStackTrace (); } super.run (); } }.começar();Classe interna estática
1. As classes internas estáticas podem acessar apenas métodos estáticos e variáveis de classes externas e não podem acessar não estáticos.
2. As classes internas estáticas podem ser criadas diretamente sem criar referências a classes externas.
Variáveis locais de acesso à classe interna anônima
Variáveis locais de acesso à classe interna devem ser finais. Se não for adicionado, o JDK1.8 será adicionado por padrão. Quando a variável usada é alterada, o método a seguir pode ser usado ou o seguinte eu posso ser definido como estático no início.
for (int i = 0; i <5; i ++) {final int finali = i; novo thread () {public void run () {System.out.println (finali); }; }.começar(); }A seguir, é apresentada uma introdução às habilidades de implementação das classes internas
public static void main (string [] args) {lam mlam = new lam (); // o primeiro método de implementação mlam.to (new Light () {@Override public void Shin () {System.out.println ("On First Method");}}); // O segundo método de classe de implementação mylam implementa a luz {@Override public void shin () {System.out.println ("Second"); }} mlam.to (new mylam ()); }} luz da interface {void shin ();} classe lam {public void to (Ligh Ligh) {Ligh.shin (); System.out.println ("on"); }}Obrigado pela leitura, espero que isso possa ajudá -lo. Obrigado pelo seu apoio a este site!