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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 伊廷文 中级黑马   /  2013-4-29 21:13  /  1763 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Anonymous Inner Class (匿名内部类)是否能extends(继承)其他类,是否能implements(实现)interface(接口)?

评分

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

查看全部评分

4 个回复

倒序浏览
内部类的用法几乎等同于一般类,只是使用外部类变量的时候需要将外部类变量设置为final.因为内部类使用外部变量时,仅仅使用的是他的一个副本,所以说,即便内部类使用的变量更改了,在外部类中也不会有变化,这也是sun为了提醒程序员的一种方法...
同样的,匿名内部类也可以继承或实现一类或方法,用法为:
JButton btn = new JButton("click");
btn.addActionListener(new ActionListener()
{
    public void actionPerformed(ActionEvent e){//some mothod...}
});
内部类除了实现一个接口也可以继承一个类,语法都是同上述的"new ActionListener()",(你也可以去继承一个适配器类,为了万无一失,我刚还专门测试了一下)
之所以swing用的内部类比较多,是因为他需要用到注册监听器机制,而该监听类如果只服务于一个组件,那么,将该类设置成内部类/匿名类是最方便的.

评分

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

查看全部评分

回复 使用道具 举报
定义匿名内部类的格式
new 父类构造函数(实参列表)| 实现接口()
{
   //匿名内部类类体
}

从定义可以看出匿名内部类 必须继承一个父类 或者实现一个接口 ,但最多只能继承一个父类或者实现一个接口 ,只不过是不能显式的继承某个类或者某个接口

评分

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

查看全部评分

回复 使用道具 举报
匿名内部类其实是个子类的实例。如果是实现的接口父类,创建的子类匿名内部类的话还可以继承,如果是继承父类,来创建的子类匿名内部类的话是不能继承的,因为java 里面是单继承,多实现的关系。
回复 使用道具 举报
如果仍有问题,请继续追问,如果问题已解决,请将分类改为已解决,谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马