java中的匿名内部类

匿名内部类:

  匿名内部类适合创建那种只需要一次使用的类。匿名内部类的语法有点奇怪,创建匿名内部类时会创建一个该类的实例,这个类定义立即消失,匿名内部类不能重复使用。

匿名内部类的格式如下

new 父类构造器(实参列表)|实现接口(){

                                                       //匿名内部类的类体部分。

                                                        }

从上面可以看出,匿名内部类必须要继承一个类,或实现一个接口,但最多只能继承一个父类或实现一个接口。

匿名内部类的2条规则:

1、匿名内部类不能使抽象类,因为系统在创建匿名内部类的时候,会立即创建匿名内部类的对象。因此不允许将匿名内部类定义成抽象类。

2、匿名内部类不能定义构造器,因为匿名内部类没有类名,所以无法定义构造器,但匿名内部类可以定义实例初始化块,通过初始化块来完成构造器需要完成的事情。

interface Product

{

   public abstract double getPrice();

    public abstract String getName();

}

public class Test

{

   public void test(Product p)

  {

     System.out.println("购买了一个"+p.getName()+",花掉了"+p.getPrice());

  }

  public static void main(String[] args)

   {

       Test t=new Test();

      //调用test方法时,要传入一个Product参数,此处传入其匿名实现类的实例

       t.test(new Product(){

           public double getPrice()

               {

                       return 123.23;

               }

          public String getName()

              {

                    return "小白";

              }

               });

   }

}

 

posted on 2014-02-20 19:43  那些年我们一起奋斗的日子  阅读(278)  评论(0编辑  收藏  举报