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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 阮金明 黑马帝   /  2011-11-16 18:19  /  2141 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

匿名内部类 是否可以extends其它类,是否可以实现接口?

评分

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

查看全部评分

8 个回复

倒序浏览
应该可以吧
回复 使用道具 举报
可以继承其他类或实现其他接口,在swing编程中常用此方式。
匿名内部类实际上已经extends了一个父类了,一个类只能extends一个父类,
例:private void test(){
//匿名内部类,OutClass实例
new OutClass(){
//override something
}
}
等价于:
class InnerClass extends OutClass{
//override something
}
OutClass oc = new InnerClass();

评分

参与人数 1技术分 +1 收起 理由
宁超 + 1 赞一个!

查看全部评分

回复 使用道具 举报
匿名内部类本身已经继承了一个类,所以他不能在继续其他类了,但是可以实现接口
new OutClass(){
//override something
}
}
已经接承类了
class InnerClass extends OutClass{
//override something
}OutClass oc = new InnerClass();

所以不能继承类了,但可以实现接口

评分

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

查看全部评分

回复 使用道具 举报
匿名的内部类是没有名字的内部类。
不能extends(继承) 其它类,但一个内部类可以作为一个接口,由另一个内部类实现...

评分

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

查看全部评分

回复 使用道具 举报
匿名内部类必须继承一个父类,或实现一个接口,但是最多只能继承一个父类,或实现一个接口。

评分

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

查看全部评分

回复 使用道具 举报
杨杰 黑马帝 2011-11-16 22:16:45
7#
匿名内部类可以继承或实现一类或方法,用法为:
JButton btn = new JButton("click");
btn.addActionListener(new ActionListener()
{
    public void actionPerformed(ActionEvent e){//some mothod...}
});
内部类除了实现一个接口也可以继承一个类,语法都是同上述的"new ActionListener()",你也可以去继承一个适配器类。

评分

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

查看全部评分

回复 使用道具 举报
王新春 黑马帝 2011-11-16 22:58:10
8#
匿名内部类是一种特殊的局部内部类,它是通过匿名类实现接口。
IA被定义为接口。
IA I=new IA(){};
注:一个匿名内部类一定是在new的后面,用其隐含实现一个接口或实现一个类,没有类名,根据多态,我们使用其父类名。
因其为局部内部类,那么局部内部类的所有限制都对其生效。
匿名内部类是唯一一种无构造方法类。
匿名内部类在编译的时候由系统自动起名Out$1.class。

如果一个对象编译时的类型是接口,那么其运行的类型为实现这个接口的类。
因匿名内部类无构造方法,所以其使用范围非常的有限。
回复 使用道具 举报
任俊杰 黑马帝 2011-11-16 23:05:13
9#
当然可以,匿名内部类和其它类是一样的,只是放的位置不一样,和没有可直接看见的类名
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马