A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 E.Young 于 2015-4-8 21:00 编辑

看了好几遍了,还是不太明白匿名内部类啊。。。郁闷。。哪位大神给我好好说道说道匿名内部类啊

7 个回复

倒序浏览
本帖最后由 silencelj 于 2015-4-8 10:42 编辑

匿名内部类:就是没有名字的内部类
1.匿名内部类其实就是内部类的简写格式。
2.定义匿名内部类的前提:内部类必须是继承一个类或者实现接口。
3.匿名内部类的格式: new 父类或者接口(){定义子类的内容}
4.其实匿名内部类就是一个匿名子类对象。而且这个对象有点胖。可以理解为带内容的对象。
5.匿名内部类中定义的方法最好不要超过3个。



回复 使用道具 举报
本帖最后由 silencelj 于 2015-4-8 10:52 编辑

由于代码多了点只能用两次回复了,希望能帮助你!!!
//首先是建立一个父类,这是定义内部类的前提
abstract class AbsDemo
{
      abstract void show();
}
//建立一个外部类
class Outer
{
       public void  function()
   {
               AbsDemo d = new AbsDemo()
             {
                    void show()
                         {
                               System.out.println();
                        }
                   void abc()
                       {
                           System.out.println("");
                      }
            }.show()             //通过匿名内部类调用方法,show();匿名对象对方法只能调用一次
             //d.abc()   会出错,因为父类中没有定义abc()方法。

            //---------------------------测试----------------------------------------
          //使用输出语句部分打印匿名内部类建立对象的部分,
           //证实AbsDemo d = new Inner();其中{}部分是实现内部类的创建对象。
          System.out.println(
                          new AbsDemo()
                    {
                               void show()
                              {
                                    System.out.println("测试:打印匿名内部类创建的是对象");
                              }
                  }
                 );
               //Outer$1@ca0b6--------打印对象的结果,说明已经创建Inner匿名内部类对象然后通过 “ .  show()”方式调用方法。
            //-------------------------------------------------------------------------
         }
}

class InnerClassDemo
{
           public static void main(String []args)
         {
           Outer out = new Outer();
             out.function();
         }
}

点评

谢谢啦!说的很详细!受教啦  发表于 2015-4-8 12:51
回复 使用道具 举报 1 0
匿名内部类感觉就是不想写子类,不想创建子类对象,直接使用匿名对象实现接口方法的一种途径
回复 使用道具 举报
我也不知道啊 今天讲的很恼火
回复 使用道具 举报
上面那位,请问
怎么恼火了?
回复 使用道具 举报
匿名内部类,就是在类里面创建(new  接口  抽象类  普通类{})使创建类(成员变量,成员函数)调用匿名对象为一体的 体现形式 很方便的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马