黑马程序员技术交流社区

标题: 谁给我详细说说匿名内部类的问题啊?拜谢 [打印本页]

作者: E.Young    时间: 2015-4-7 22:27
标题: 谁给我详细说说匿名内部类的问题啊?拜谢
本帖最后由 E.Young 于 2015-4-8 21:00 编辑

看了好几遍了,还是不太明白匿名内部类啊。。。郁闷。。哪位大神给我好好说道说道匿名内部类啊
作者: silencelj    时间: 2015-4-8 10:39
本帖最后由 silencelj 于 2015-4-8 10:42 编辑

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




作者: silencelj    时间: 2015-4-8 10:45
本帖最后由 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();
         }
}

作者: showdy    时间: 2015-4-8 21:06
匿名内部类感觉就是不想写子类,不想创建子类对象,直接使用匿名对象实现接口方法的一种途径
作者: 初夜告白    时间: 2015-4-8 21:09
我也不知道啊 今天讲的很恼火
作者: 蛋糕的爱意    时间: 2015-4-9 13:39
上面那位,请问
怎么恼火了?
作者: 于先森    时间: 2015-4-13 19:22
匿名内部类,就是在类里面创建(new  接口  抽象类  普通类{})使创建类(成员变量,成员函数)调用匿名对象为一体的 体现形式 很方便的。




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