黑马程序员技术交流社区

标题: 匿名内部类是否可继承其他类? [打印本页]

作者: 16463535    时间: 2013-4-13 15:03
标题: 匿名内部类是否可继承其他类?
本帖最后由 16463535 于 2013-4-14 00:35 编辑

匿名内部类是否可继承其他类?
作者: 刘胜寒    时间: 2013-4-13 15:54
本帖最后由 刘胜寒 于 2013-4-13 15:56 编辑

  1. abstract class DemoAbs
  2. {
  3.         abstract void show();
  4. }
  5. class Outer
  6. {
  7.         int x = 3;
  8.         public void function()
  9.         {
  10.                 new DemoAbs()
  11.                 {
  12.                         public void show()
  13.                         {        
  14.                                 System.out.println(x);
  15.                         }
  16.                         
  17.                 }.show();
  18.         }
  19. }

  20. public class Main
  21. {
  22.         public static void main(String[] args)
  23.         {
  24.                 new Outer().function();
  25.         }
  26. }
复制代码

作者: 刘胜寒    时间: 2013-4-13 15:56
这个是必须的....
作者: Friendy89    时间: 2013-4-13 16:10
1、匿名内部类,其实就是内部类的简写格式
2、定义匿名内部类的前提:内部类必须是继承一个类或实现接口
3、匿名内部类的格式: new 父类或者接口(){定义子类的内容}
其实匿名内部类就是一个匿名子类对象,而且这个对象有点胖。可以理解为带内容的对象。

多次调用:
匿名内部类不适合多次调用,定义的方法最好不包括三个。

作者: Friendy89    时间: 2013-4-13 16:11
1、匿名内部类,其实就是内部类的简写格式
2、定义匿名内部类的前提:内部类必须是继承一个类或实现接口
3、匿名内部类的格式: new 父类或者接口(){定义子类的内容}
其实匿名内部类就是一个匿名子类对象,而且这个对象有点胖。可以理解为带内容的对象。

多次调用:
匿名内部类不适合多次调用,定义的方法最好不包括三个。

作者: huima    时间: 2013-4-13 16:20
匿名内部类是没有名字的内部类,不能继承其它类,但一个内部类可以作为一个接口,由另一个内部类实现.
一、由于匿名内部类没有名字,所以它没有构造函数。因为没有构造函数,所以它必须完全借用父类的构造函数来实例化,换言之:匿名内部类完全把创建对象的任务交给了父类去完成。
二、在匿名内部类里创建新的方法没有太大意义,但它可以通过覆盖父类的方法达到神奇效果。
三、因为匿名内部类没有名字,所以无法进行向下的强制类型转换,持有对一个匿名内部类对象引用的变量类型一定是它的直接或间接父类类型。

作者: zhuiyi0819    时间: 2013-4-14 00:11
匿名内部类必须指定父类或者指定实现的接口
new 父类或接口(){}
必须指定父类或者实现的接口。
匿名内部类与正常类不一样,它只能指定一个要继承的类或者是指定一个要实现的接口。两者不能兼得!
实现接口,也只能实现1个。要实现接口,就不能指定父类!

作者: fdg666    时间: 2015-12-2 22:26
明白了




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