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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 沈子豪 中级黑马   /  2013-3-13 12:33  /  1689 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 沈子豪 于 2013-3-13 18:45 编辑

匿名内部类是否可以extends继承其它类,是否可以implements(实现)interface(接口)?

点评

如果问题解决了,请尽快将帖子分类改为已解决,谢谢  发表于 2013-3-13 18:26
如果问题解决了,请尽快将帖子分类改为已解决,谢谢  发表于 2013-3-13 18:26

6 个回复

倒序浏览
本帖最后由 shenbeiaia 于 2013-3-13 14:01 编辑

一种是继承Thread一种是实现 Runnable接口。
第一种:
new Thread(){
                        public void run(){
       //执行
};
}.start();

第二种:
new Thread(new Runnable() {
                        public void run() {
        //执行
};
}) {
}.start();

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1 赞一个!

查看全部评分

回复 使用道具 举报
匿名内部类是一个特殊的内部类。他比内部类多出的2点特殊之处就是,
1;没有名字
2;匿名内部类无法显示的继承某个类或实现某个接口。
希望能帮到你一点点
回复 使用道具 举报
匿名的内部类是没有名字的内部类。不能extends(继承)其它类,但一个内部类可以作为一个接口,由另一个内部类实现
回复 使用道具 举报
匿名内部类就是 继承了父类或实现了接口后 new 父类名或接口名(){ 复写方法  }     这样才存在的    如果没有父类或实现接口  是无法建立匿名内部类的.所以是可以存在继承和实现接口的
回复 使用道具 举报
理论上,是可以实现继承的如下面代码:

new OutClass(){//方法体};
其中:{//方法体}是匿名内部类
他等价于:
OutClass out = new 匿名内部类();
下面是匿名内部类的情况:
class 匿名内部类 extends OutClass{//方法体}
但是呢,由于没有名字,所以没办法使用extends关键字。

同理,他理论上是可以实现的,如下代码:
Interface Test{ public void a();}
Test test=new Test(){ public void a(){//方法体} };
其中:{ public void a(){//方法体} }是匿名内部类

同理反正就是没法使用implements进行实现。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1 赞一个!

查看全部评分

回复 使用道具 举报
呵呵 匿名内部类 本身存在的前提就是内部类需要继承或者实现一个类或者接口。
  1. interface Inter
  2. {
  3.         void show();
  4. }
  5. class Outer
  6. {
  7.         private int num=2;
  8.         /*class Inner implements Inter
  9.         {
  10.                 public void show()
  11.                 {
  12.                         System.out.println("num="+num);
  13.                 }
  14.         }*/
  15.         public void method()
  16.         {
  17.                 /*Inner in=new Inner();
  18.                 in.show();*/
  19.                 new Inter()//匿名内部类其实就是一个匿名子类对象,后面有{},里面定义了成员内容。
  20.                 {
  21.                         public void show()//对父类中的函数进行覆盖,并进行自定义内容
  22.                         {
  23.                                 System.out.println("num="+num);
  24.                         }
  25.                 }.show();
  26.         }
  27. }
  28. class Demo
  29. {
  30.         public static void main(String[] args)
  31.         {
  32.                 Outer out=new Outer();
  33.                 out.method();
  34.         }
  35. }
复制代码
注释掉的部分 就是内部类的常规写法。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

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