- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
14Java中内部类与匿名内部类
Java中内部类与匿名内部类内部类内部类:将一个类定义在另外一个类的里面,里面的类的就称为内部类又称为内置类,嵌套类。class Outer{class Inter{ }}编译后的class文件是:Outer.class 和 Outer$Inter.class。为什么把类定义在内部,什么时候需要定义内部类?答:类定义在另外一个类内部,该内部类就可以直接访问外类中的成员,特别是private的成员。内部类其实也是一种封装。当描述一个事物A时,发现该事物中还有其他事物(B,C等),而且这些其他事物(B,C等)还要访问该事物A的内容,这时就需要把这些其他事物(B,C等)定义为内部类来描述。例如:人体是一个类,其中包括很多器官和组织,而大脑又要访问人体的其他器官,可以把大脑单独定义成一个类,从而成为内部类。内部类的访问特点:内部类可以直接访问此外部类中的成员(private的可以直接被访问);此外部类要访问内部类的内容,需要建立内部类的对象。内部类也可以放在类中与成员并列的位置,也可以放在局部位置上(成员方法中)(局部内部类);如果内部类放在局部位置(成员方法中)中,内部类内部需要访问此方法中的局部变量,此局部变量必须定义为final的,即内部类在局部位置上时,内部类只能访问局部中被final修饰的局部变量即常量。原因:因为内部类定义在成员方法中,当执行方法时,会产生一个对象,但是方法执行完后就会释放,而这个对象再次访问这个方法的局部变量,肯定找不到了,之所以定义为final,是在定义个常量,即只是给常量起个名字,所以对象再次寻找时,找的就是一个常量而已,而常量并不是随着方法的消失而消失。实例:class Outer {void method() {finalintnum = 10 ;class Inter{void show1() { System.out.println(num); } } Inter inter = new Inter();inter.show1(); }}publicclass OuterInter {publicstaticvoid main(String[] args) {new Outer().method(); }}如果在外类的外部直接生成一个内部类(前提:不是private的)的对象方法是Outer.Inter inter = new Outer().new Inter();inter.xxxx(); //就可以直接利用内部类的引用访问内部类的成员如果内部类是静态的,则就差不多相当于一个外部类。生成对象的方法:Outer.Inter inter = new Outer.Inter(); //不需要先new一个外部类对象了如果内部类是静态的,而且内部类的成员也是静态的:直接就可以调用这些静态方法: Outer.Inter.xxx();注意:如果内部类中定义了静态方法,则内部类必须定义为静态的。为什么内部类能够直接访问外部类中的成员?答:因为内部类拥有了外部类的引用,使用方法外部类名.this.外部类成员。实例:class Outer{intnum = 10;class Inter{intnum = 9;void show() {intnum = 8; System.out.println(num);//调用的是此方法的局部变量 System.out.println(this.num);//this代表的是内部类的对象, System.out.println(Inter.this.num);//同this一样,this本身就是内部类的对象,利用Inter在此修饰没有必要 System.out.println(Outer.this.num);//利用外部类修饰this,则this就代表的是外部类的对象} }}publicclass OuterInter {publicstaticvoid main(String[] args) {Outer.Inter inter = new Outer().new Inter();inter.show(); }}结果:输出为8,9,9,10如果类中有静态成员,则这个类必须是静态的。匿名对象匿名对象(没有名字的对象):new Car(); 这就是个匿名对象。如果需要调用某个成员方法,直接利用 new Car().run(); 当对象对成员方法仅仅一次的调用时,可以简化不给此对象起名字,使用匿名对象。因为匿名对象一旦使用一次后,无法再次找到它了。匿名对象对属性操作没有什么意义,因为如果赋值一次后,没法调用出来。匿名对象可以作为实际参数进行传递,此时匿名对象对象就会传进去,被此参数
您可能关注的文档
- (JTS-257-2008)水运工程质量检验记录表格-附录B.doc
- (2011版)轻小型起重运输设备产品生产许可证实施细则(千斤顶手动葫芦带式输送机部分).doc
- (内部资料)2015软考系统集成项目管理练习题及答案解析.docx
- (吐血整理)执业医师实践技能考试之体格检查.docx
- (专业教学楼)混凝土工程监理细则.doc
- (RFJ01-2002)99-1过滤器除尘器过滤吸收器分项工程质量验收记录表.doc
- (半固定)泡沫推车说明书.doc
- (学生规程)东北石油大学第三十八届体育运动会.doc
- (宏业15定额)房屋建筑与装饰工程说明及计算规则.docx
- (市政)2015清单计价定额说明及计算规则.doc
最近下载
- (推荐!)人教版音乐二年级上册《报灯名》教案教学设计.pdf VIP
- 2025兴业银行总行国际业务部交易银行部招聘笔试参考题库附答案解析.docx VIP
- 一种利用酿酒废水和秸秆制备有机肥的方法.pdf VIP
- 人教版小学数学一年级下册全册教案(2024年3月修订).docx VIP
- 力劲DCC400吨压铸机说明书.pdf VIP
- 2025兴业银行总行国际业务部交易银行部招聘考试含答案.docx VIP
- 2025兴业银行总行国际业务部交易银行部招聘笔试模拟试题及答案解析.docx VIP
- 英语报刊选读词汇特色.ppt VIP
- 2025兴业银行总行国际业务部交易银行部招聘笔试含答案.docx VIP
- 2025兴业银行总行国际业务部交易银行部招聘考试备考试题及答案解析.docx VIP
原创力文档


文档评论(0)