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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 唐侠君 中级黑马   /  2013-12-16 01:57  /  1632 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

匿名内部类是否可以继承其它类,是否可以以implements实现接口?
在网上搜到有两种解释
1.可以继承其他类或完成其他接口,在swing编程中常用此方式。
2.匿名的内部类是没有名字的内部类。不能extends(继承) 其它类,但一个内部类可以作为一个接口,由另一个内部类实现。
不知到底该怎样解释了,希望大家帮助一下,谢谢了!

评分

参与人数 1技术分 +1 收起 理由
FFF + 1

查看全部评分

2 个回复

倒序浏览
匿名内部类时必须要继承或实现接口的,要不他怎呢创建类呀?匿名内部类的格式:
  1. class out{ //外部类
  2. new Runnable(){ //实现接口的匿名内部类
  3. 写内部内的方法或成员变量;
  4. }
  5. new Object(){ //继承类的匿名内部类
  6. 写内部内的方法或成员变量;
  7. }
  8. }
复制代码

如果不继承类或接口是无法匿名的;

评分

参与人数 1黑马币 +3 收起 理由
FFF + 3 回答得不够完善。例子没有代表性.

查看全部评分

回复 使用道具 举报
本帖最后由 胡永城 于 2013-12-17 10:51 编辑

1、匿名内部类必须继承其他类或实现接口
2、可以定义普通内部类抽象内部类内部接口,并且这些内部类或内部接口都可以被其他内部类继承或实现,且可以以匿名内部类的方式去继承和实现。
源代码如下,不全面,给你一个方法,其他自己测试吧。
  1. import org.junit.Test;
  2. public class Ohter {
  3.         @Test
  4.         public void test(){
  5.                 new InnerDemo(){//匿名内部类继承InnerDemo
  6.                         void show(){
  7.                                 System.out.println("匿名继承外部其他类InnerDemo复写的show方法");
  8.                         }
  9.                 }.show();
  10.                 new Inner(){//匿名内部类继承Inner
  11.                         void show(){
  12.                                 System.out.println("匿名继承内部类Inner复写的show方法");
  13.                         }
  14.                 }.show();
  15.                 new Interface() {
  16.                         @Override
  17.                         public void show() {
  18.                                 System.out.println("匿名内部类实现内部接口");
  19.                         }
  20.                 }.show();
  21.         }
  22.         class Inner{//内部类Inner
  23.                 void show(){
  24.                         System.out.println("内部类Inner的show方法");
  25.                 }
  26.         }
  27.         interface Interface{//内部接口
  28.                 void show();//未实现的方法
  29.         }
  30. }
  31. class InnerDemo{//外部其他类
  32.         void show(){
  33.                 System.out.println("外部其他类InnerDemo的show方法");
  34.         }
  35. }
复制代码
为什么这么写的问题请看毕老师的视频,面向对象第九。



哎!付哥这是对我羡慕嫉妒恨呀,所以给加了这么多金币    ↓  ↓

评分

参与人数 1黑马币 +1 收起 理由
FFF + 1 +10086

查看全部评分

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