欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2023-12-28 19:19:28
1 package Inner; 2 /** 3 * 测试内部类的使用 4 * @author 小王同学 5 * 1.成员内部类 ①非静态内部类 ②静态内部类 6 * 2.局部内部类 7 * 3.匿名内部类 8 * 总结: 内部类不只是普通的类,还可以是接口(Interface)默认static a... ......
 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 }

 

上一篇:

下一篇: