Java匿名类

public class Person
{
    public void hello()
    {
        System.out.println("我是Person");
    }
}

 

 1 public class Main
 2 {
 3     /**
 4      * 主函数,程序的入口
 5      * @param args
 6      */
 7     public static void main(String[] args)
 8     {
 9         final int num=90;//局部变量
10         
11         //匿名类
12         Person p1=new Person(){
13             
14             @Override
15             public void hello()
16             {
17                 System.out.println("我是匿名类"+" "+"外部类中的局部变量num="+num);
18             }
19         };
20         
21         p1.hello();
22     }
23 }

 

  

显然内部类可以访问外部类的局部变量。

匿名类原理

原理解析:

Person p1=new Main$1();
而Main$1是个类,也就是匿名类,定义如下:
 1 package yydl;
 2 
 3 import java.io.PrintStream;
 4 
 5 class Main$1 extends Person
 6 {
 7     public void hello()
 8     {
 9         System.out.println("我是匿名类 外部类中的局部变量num=90");
10     }
11 }

 

posted @ 2016-02-11 15:16  Sundy.Lee  阅读(215)  评论(0编辑  收藏  举报