黑马程序员技术交流社区

标题: Anonymous Inner Class匿名内部类是否可以extends(继承)其它类,是否可以(实现接口... [打印本页]

作者: 王毛毛    时间: 2011-9-28 18:03
标题: Anonymous Inner Class匿名内部类是否可以extends(继承)其它类,是否可以(实现接口...
Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)...
作者: 匿名    时间: 2011-9-28 18:17
完全可以,看下边的例子,摘自Think   in   Java,The   2nd   Edition.

先定义一个接口:
interface   Contents   {
    int   value();
}

再定义一个类(构造函数不是默认的):
public   class   Wrapping   {
    private   int   i;
    public   Wrapping(int   x)   {   i   =   x;   }
    public   int   value()   {   return   i;   }
}

先实现接口:
public   class   Parcel6   {
    public   Contents   cont()   {
        return   new   Contents()   {
            private   int   i   =   11;
            public   int   value()   {   return   i;   }
        };   //   Semicolon   required   in   this   case
    }
    public   static   void   main(String[]   args)   {
        Parcel6   p   =   new   Parcel6();
        Contents   c   =   p.cont();
    }
}

再继承类:
public   class   Parcel7   {
    public   Wrapping   wrap(int   x)   {
        //   Base   constructor   call:
        return   new   Wrapping(x)   {   
            public   int   value()   {
                return   super.value()   *   47;
            }
        };   //   Semicolon   required
    }
    public   static   void   main(String[]   args)   {
        Parcel7   p   =   new   Parcel7();
        Wrapping   w   =   p.wrap(10);
    }
}   

更详细请看Think   in   Java,现在是The   3rd   Edition.
作者: 王家虎    时间: 2011-9-28 18:21
可以,
匿名内部类的定义前提:
     内部类必须继承或者实现一个外部接口,格式如下:
       new 父类名称or接口名称(){子类的内容};
其实匿名内部类就是子类对象。
[ 本帖最后由 王家虎 于 2011-09-28  18:28 编辑 ]




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2