- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
匿名内部类精讲
匿名内部类精讲
匿名内部类适合创建那种只需要一次使用的类,例如命令模式时所需要的Command对象。匿名内部类的语法有点奇怪,创建匿名内部类时会立即创建一个该类的实例,这个类定义立即消失,匿名内部类不能重复使用。??? 定义匿名内部类的格式如下:
[java]?view plaincopy
new?父类构造器(参数列表)|实现接口()??
{??
?//匿名内部类的类体部分??
}??
?
从上面定义可以看出,匿名内部类必须继承一个父类,或实现一个接口,但最多只能继承一个父类,或实现一个接口。?关于匿名内部类还有如下两条规则:?1)匿名内部类不能是抽象类,因为系统在创建匿名内部类的时候,会立即创建内部类的对象。因此不允许将匿名内部类定义成抽象类。?2)匿名内部类不等定义构造器,因为匿名内部类没有类名,所以无法定义构造器,但匿名内部类可以定义实例初始化块,?通过实例初始化块来完成构造器需要完成的事情。最常用的创建匿名内部类的方式是需要创建某个接口类型的对象,如下程序所示:
[java]?view plaincopy
interface?Product{??
???public?double?getPrice();??
???public?String?getName();??
}??
public?class?TestAnonymous{??
???public?void?test(Product?p){??
???System.out.println(购买了一个+p.getName()+,花掉???????了+p.getPrice());??
??}??
?public?static?void?main(String[]args){??
????TestAnonymous?ta?=?new?TestAnonymous();??
????ta.test(new?Product(){??
????public?double?getPrice(){??
???????return?567;??
????}??
???public?String?getName(){??
??????return?AGP显卡;??
???}??
??});??
?}??
}??
?
上面程序中的TestAnonymous类定义了一个test方法,该方法需要一个Product对象作为参数,但Product只是一个接口,无法直接创建对象,因此此处考虑创建一个Product接口实现类的对象传入该方法---如果这个Product接口实现类需要重复使用,则应该经该实现类定义一个独立类;如果这个Product接口实现类只需一次使用,则可采用上面程序中的方式,定义一个匿名内部类。??? 正如上面程序中看到,定义匿名类不需要class关键字,而是在定义匿名内部类时直接生成该匿名内部类的对象。上面粗体字代码部分就是匿名类的类体部分。?由于匿名内部类不能是抽象类,所以匿名内部类必须实现它的抽象父类或者接口里包含的所有抽象方法。?对于上面创建Product实现类对象的代码,可以拆分成如下代码:
[java]?view plaincopy
class?AnonymousProduct?implements?Product{??
??public?double?getPrice(){??
???return?567;??
????}??
??public?String?getName(){??
???return?AGP显卡;??
????}??
?}??
?ta.test(new?AnonymousProduct());??
?
?当通过实现接口来创建匿名内部类时,匿名内部类也不能显示创建构造器,因此匿名内部类只有一个隐式的无参数构造器,故new接口名后的括号里不能传入参数值。??? 但如果通过继承父类来创建匿名内部类是,匿名内部类将拥有和父类相似的构造器,此处的相似指的是拥有相同的形参列表。
?
?
?
abstract?class?Device{??
??private?String?name;??
??public?Device(){??
??}??
??public?Device(String?name){??
???this.name?=?name;??
??}??
??public?abstract?double?getPrice();??
??//此处省略了name属性的setter和getter方法??
?}??
?public?class?AnonymousInner{??
??public?void?test(Device?d){??
???System.out.println(购买了一个+d.getName()+,花掉了+d.g
您可能关注的文档
- 五金部产品知识目录.doc
- 五氧化二磷安全技术说明书.doc
- 五金物资标准目录大全.docx
- 井点降水工程监理实施细则.doc
- 五大员注册管理系统操作使用说明.doc
- 交警钢结构监理实施细则.doc
- 产业园区清单式管理试点工作成果框架要求研究52.docx
- 产业结构指导目录2013版.doc
- 产品采购合同(有利于买方).doc
- 京通线镀锡防磨胶质线询价采购单.doc
- 2024年度党员干部专题组织生活会个人新四各方面对照检查材料3篇合集.docx
- 2023年民主生活会领导干部个人发言3篇范文.docx
- 第二批主题教育专题组织生活会普通党员个人对照检查材料合集2篇.docx
- 学习以案促改党纪教育专题组织生活会个人对照检查材料两篇.docx
- 党员领导干部2023年民主生活会“六个方面”个人对照检查材料3篇范文.docx
- 党员干部“严守纪律规矩 加强作风建设”组织生活会个人对照检查材料集合篇.docx
- 2024班子防治统计造假专题民主生活会对照检查材料两篇范文.docx
- 2024公司机关党支部教育专题组织生活会个人对照检查材料两篇.docx
- 2023年度专题民主生活会个人对照新6个对照方面检查材料3篇文稿.docx
- 2024第二批主题教育专题组织生活会对照检查材料2篇文本.docx
最近下载
- 综合自然地理学 教学ppt课件版 1 第一章 自然地理环境的整体性.ppt VIP
- 初中语文《古诗词鉴赏》答题技巧(共81张PPT).pptx
- 平面构成课件.pptx VIP
- 基于PLC自动门控制系统的设计毕业论文.doc
- 2023-2024学年福建省福州市福清市部编版六年级下册期中考试语文试卷【含答案】.pdf
- 第16讲 基础制动装置检修《电力机车构造》(机车车体和转向架的检修与维护).pptx VIP
- 湖南省长沙市第一中学2024-2025学年高三上学期月考(五)历史试卷含答案.pdf
- 2外科护理学 高频考点.pdf
- 2024年中考语文试题汇编——记叙文阅读及答案.docx
- 公共管理导论-竺乾威-第二章 政府与治理.pptx VIP
文档评论(0)