java吧 关注:1,296,824贴子:12,834,019
  • 49回复贴,共1

关于actionlistener接口

只看楼主收藏回复

这接口能实例化么?理由?


来自手机贴吧1楼2013-07-09 12:29回复
    你不可能直接实例化一个“接口”
    只能实例化一个实现了这个接口的“类”


    IP属地:江苏4楼2013-07-09 12:38
    收起回复
      2026-02-03 23:03:59
      广告
      不感兴趣
      开通SVIP免广告
      直接拿个类impl就行了呀,不过用匿名类居多。
      理由:没有。接口就是用来实现的,就像你问人为什么可以吃饭是一样不好解释的,不过可以@java之父


      来自Android客户端5楼2013-07-09 12:42
      收起回复
        如图,怎么解释


        6楼2013-07-09 14:59
        收起回复
          擦 我知道了 看了半天 这不是new接口啊 这是new一个匿名内部类 实现接口并且实现接口中的虚函数!


          IP属地:湖南本楼含有高级字体7楼2013-07-09 15:25
          收起回复
            接口 A{
            虚方法a();
            }
            ============
            new A(){a(){.....};}
            这个等同于
            class 匿名类 实现A{
            a(){....}
            }
            new 匿名类
            能看懂不


            IP属地:湖南8楼2013-07-09 15:39
            收起回复
              比如b.addMouseListener( new ActionListener(){.......});如果ActionListener不是接口,难道这类凭空冒出?还有,它也没implements ×××Listener,怎么就能实现接口中的方法??!!!


              9楼2013-07-09 15:39
              收起回复
                匿名类,二楼讲的很清楚了


                10楼2013-07-09 16:17
                回复
                  2026-02-03 22:57:59
                  广告
                  不感兴趣
                  开通SVIP免广告
                  你先要确定一下
                  new 东西
                  这个东西不一定是类
                  new的作用不是根据类实例化对象 是根据"东西"来计算出来所需开辟的内存大小并分配空间
                  实例化对象是构造函数的事情
                  接口A{
                  虚函数a();
                  }
                  new A(){a(){xx}};
                  这个就是根据后面的东西来分配一个内存区域
                  后面的东西本质是一个 类 实现了接口A 并且覆盖a()
                  任何东西在覆盖a()的前提下(当然语法上只有类能实现A并覆盖a()) 大小就能够确定 就能够调用构造方法实例化对象


                  IP属地:湖南本楼含有高级字体11楼2013-07-09 16:22
                  收起回复
                    A(){a(){...}}
                    上面这一整个才是类 这个明白不? 你硬是要取名 名字就那么长


                    IP属地:湖南12楼2013-07-09 16:30
                    回复
                      我觉得是你没理解我意思
                      为啥一定是new ActionListener()???
                      java语法上也是分号作为结尾啊
                      A a = new A();
                      这才是一个完整的语句
                      正如
                      new ActionListener(){a(){xx}};
                      new后面又不是直接new接口名 new一大串呢


                      IP属地:湖南本楼含有高级字体13楼2013-07-09 16:38
                      回复
                        ActionListener(){a(){xx}}
                        这个 就是类名 不跟任何类名冲突 而且作用域很小
                        所以才叫 匿名内部类


                        IP属地:湖南本楼含有高级字体14楼2013-07-09 16:40
                        回复