Java自学笔记(第九天)-内部类-成员内部类-局部内部类-匿名内部类-

(*)内部类:定义在类中的类

1,内部类可以直接访问外部类中的成员,包括私有,内部类成员调用外部类成员时都有一句隐式命令(外部类名.this.)

2,外部类访问内部类成员必须通过内部类对象进行调用

3,如何在其他类中调用内部类成员,outer.inner inner = new outer().new inner();

4,内部类可以被private和static修饰,特性和使用方法和类普通成员一样

5,内部类中有Static成员,该内部类必须被Static修饰

6,Static函数调用Static内部类时,如下:

Java自学笔记(第九天)-内部类-成员内部类-局部内部类-匿名内部类-_第1张图片

 //内部类定义规则,事物中还有内部事物时,内部事物可以用内部类来描述

//可以private内部类实现封装

//成员内部类局部内部类

1,局部内部类不能被private,Static成员修饰符修饰

2,可以直接访问外部类中的成员,因为还持有外部类中的引用。但是不可以访问它所在的局部中的局部变量。可以访问被final修饰的局部变量

//局部内部类使用实例,如下:

Java自学笔记(第九天)-内部类-成员内部类-局部内部类-匿名内部类-_第2张图片

 (*)匿名内部类:

1,匿名内部类其实就是内部类的简写格式

2,定义匿名内部类的前提:

  内部类必须是继承一个类或者实现接口

3,匿名内部类的格式: new 父类或接口(){复写继承的代码}.方法名();如下:

 1 class nilei
 2 {
 3     public static void main(String[] args) 
 4     {
 5         new inter(){
 6             public void method()
 7             {
 8                 System.out.println("method002");
 9             }
10         }.method();
11 
12         new Object(){
13             public void aa(){
14                 System.out.println("method003");
15             }
16         }.aa();
17 
18     }
19 }
20 interface inter
21 {
22     void method();
23 }

 

4,匿名内部类最好不要超过3个方法

(*)匿名内部类练习:

 1 class nilei
 2 {
 3     public static void main(String[] args) 
 4     {
 5         //调用test类中的functions方法,function方法的返回值是一个匿名内部类
 6         test.function().method();
 7         //调用nilei类中的show方法,在参数列表中创建匿名类当参数
 8         show(new inter(){
 9             public void method(){
10                 System.out.println("method001");
11             }
12         });
13         //调用nilei类中的show2方法,返回值是一个匿名内部类
14         show2().method();
15 
16     }
17 
18     public static void show(inter in){
19         in.method();
20     }
21     public static inter show2(){
22         return new inter(){
23             public void method()
24             {
25                 System.out.println("method002");
26             }
27         };
28     }
29 }
30 
31 class test
32 {
33     static inter function(){
34         return new inter(){
35             public void method()
36             {
37                 System.out.println("method");
38             }
39         };
40     }
41 }
42 interface inter
43 {
44     void method();
45 }

 

你可能感兴趣的:(匿名内部类)