当前位置: 移动技术网 > IT编程>开发语言>Java > 3种类内部的用法(成员,局部,匿名)

3种类内部的用法(成员,局部,匿名)

2019年07月15日  | 移动技术网IT编程  | 我要评论
 1 package inner;
 2 /**
 3  * 测试内部类的使用
 4  * @author 小王同学
 5  * 1.成员内部类 ①非静态内部类    ②静态内部类
 6  * 2.局部内部类
 7  * 3.匿名内部类
 8  * 总结: 内部类不只是普通的类,还可以是接口(interface)默认static abstract修饰 ,抽象类(abstract)
 9  *         使用方法内部类时,一定要在内部类中调用一下内部类中的方法否则无法使用.  列如:new inner3().test();
10  *         成员内部类就是类的一个成员变量. 
11  *         静态内部类只能使用外部类的静态成员. 普通内部类可以调用外部类的任何方法和属性,私有的也可以.
12  *         普通内部类就是方法的方法的一个局部变量,作用域只限于方法体中.
13  *         匿名内部类就是用来实现抽象方法或者是接口的抽象方法的.
14  *         使用匿名内部类实现抽象类的方法时,必须要抽象类声明为静态的(static)才行,因为在main方法中不能直接调用非静态方法.
15  */
16 public class outer {
17     private string name;
18     private static  int age;
19     //1.测试成员内部类  
20     class inner{
21     }
22     static class inner2{
23          void run(){
24             system.out.println(age);//静态内部类只能使用外部类的静态成员。
25         }
26         }
27     //2.测试方法内部类
28         void testxx(){
29         int a =10;
30             class inner3{
31                 public void test(){//内部累的方法,可以和外部类的方法重名.
32                     system.out.println("这是方法内部类");
33                     system.out.println("这是外部方法的局部变量:a="+a);
34                     system.out.println("这是外部方法的成员变量:age="+name);
35                 }     
36              
37     }
38 
39                 new inner3().test();//方法内部类在这里调用,不然在外界没有办法访问到
40     }
41     //3.测试匿名内部类
42         interface  inter { //接口和抽象方法也可以充当内部类使用
43             void show();
44         }
45          static abstract class inner4{ //这里不加static的话,在使用匿名内部类时,就无法
46              abstract void  jump();
47         }
48         public static  void main(string[] args) {
49         //1.成员内部类 
50         /**两种定义非静态内部类的方法 */
51         inner n1 =new outer().new inner();
52         outer o1 =new outer();
53         inner n2 =o1.new inner();
54         /**定义静态类的方法 */
55         inner2 n3 =new  outer.inner2();//直接使用new 外部类.内部类();
56         //2.方法内部类
57         /**调用方法内部类的方法 */
58         new outer().testxx();
59         //3.匿名内部类
60         /**这是实现接口的抽象方法*/
61         inter t1= new inter(){
62             @override
63             public void show() {
64                 system.out.println("这是匿名内部类噢噢噢噢");        
65             }
66         };
67         t1.show(); //调用匿名内部类
68         /**实现抽象类的抽象方法 */
69         inner4 in4 =new inner4() {
70             @override
71             void jump() {
72                 // todo auto-generated method stub
73                 
74             }
75         };
76 }
77 }

 

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网