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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 0803宝 中级黑马   /  2015-8-17 21:50  /  446 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

是定义在局部位置的没有名字的内部类。
前提: 存在一个类,抽象类,或者接口。
本质理解:其实这是一个继承类或者实现接口的匿名的子类对象。
可是就是不会用,也看不懂匿名内部类。

3 个回复

倒序浏览
其实就是复写父类的子类就是没有名字,多看看视频,多写几次,就理解了。
回复 使用道具 举报
本帖最后由 keviner 于 2015-8-17 23:47 编辑

new fu() {
     void method(){}
}.method();

父类引用建立匿名子类对象并调用method方法。
大概就这个意思吧
回复 使用道具 举报
本帖最后由 sangyuan 于 2015-8-19 12:01 编辑

之前回复过类似的帖子,给你附上个代码,你一看应该就明白有什么好处了。
  1. /*
  2.         所有父类或者父接口出现的地方,完全可以用子类对象替代。
  3. */
  4. interface Animal
  5. {
  6.         public abstract void eat();

  7. }
  8. //方式一:普通的方法,创建一个Dog类来实现接口Animal的show方法,然后在下面测试类中,再创建一个对象来调用这个方法
  9. /*
  10. class Dog implements Animal
  11. {
  12.         public void eat()
  13.         {
  14.                 System.out.println("eat dog");
  15.         }
  16. }
  17. */
  18. class Test
  19. {
  20.         //一个方法的形式参数是接口(抽象类)
  21.         public void show(Animal a) //Animal a =  new Dog();
  22.         {
  23.                 a.eat();
  24.         }
  25. }

  26. class AnimalTest
  27. {
  28.         public static void main(String[] args)
  29.         {
  30.                 Test t = new Test();

  31.                 //Dog d = new Dog();
  32.                 //t.show(d);
  33.         
  34.                //方法二:使用匿名内部类,这样就不用再创建类,也不用再测试类中创建对象,需要注意的是,在这儿,匿名内部类是作为show方法里的参数进行传递的。
  35. t.show(new Animal(){
  36.                         public void eat()
  37.                         {
  38.                                 System.out.println("eat dog");
  39.                         }
  40.                 });
  41.         }
  42. }
复制代码



回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马