黑马程序员技术交流社区

标题: 匿名内部类 [打印本页]

作者: air    时间: 2013-11-9 18:01
标题: 匿名内部类
  1. interface Test
  2. {
  3.         void func();
  4. }


  5. class  
  6. {
  7.         public static void main(String[] args)
  8.         {
  9.                 //补足代码;(匿名内部类)
  10.                 new Demo().show(new Test()
  11.                         {
  12.                                 public void func(){}
  13.                         });
  14.         }
  15.         void show(Test t)
  16.         {
  17.                 t.func();
  18.         }


  19. }
复制代码
实在是被这视频里的测试题搞得头疼,老师讲的又快,说这道题比较综合,又好像理解不理解都没关系.
可是我实在是想知道,这里面的关系我理不清,.一堆括号看的我晕 啊~~~
求帮助讲解答案意义
作者: 零下五度的水    时间: 2013-11-9 18:09
new Demo().show( ... )         获得一个 Demo 类的 匿名实例对象,然后调用该对象的 show 方法
show 方法的参数是 Test t           所以填了 new Test()
而 Test 是一个接口,需要实现接口的 func() 方法 所以你这个 new 的 Test 得实现这个方法{。。。}
其实匿名内部类就是写一个类的子类/实现类

作者: 649个伤心的理由    时间: 2013-11-9 18:25
其实可以把认为存在class Param implements Test
                           {
                                   public void func(){}
                           };
                            Test t=new Param()
                             new Demo.show(t)
Param实现了接口Test中func方法,然后新建一个对象t,将t传给了show。
可以把您看起来比较纠结的那部分代码看做上述代码的简写形式,简写无非是把定义类和生成对象的操作一气呵成!
作者: 何超    时间: 2013-11-9 20:07





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