- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第十章 内部类 ★ 外部类和内部类 ★ 匿名内部类和嵌套类 ★ 为什么需要内部类? 10.1、创建内部类 P190 1、 内部类(inner class)的概念 ★ 可以将一个类的定义放在另一个类的定义内部,这就是内部类。 ◆ 普通内部类属于外部类,普通内部类对象必须依附于外部类对象,不能单独存在。 2、 内部类的操作: 通常在外部类定义一个方法,该方法创建一个内部类对象,并返回指向该内部类对象的引用。 public class Parcel2 // 包裹 P191 { class Destination // 目的地 { private String label; Destination(String w) { label=w;} String readLabel() { return label;} }// 内部类,与外部类数据成员和成员函数平行 public Destination to(String s) { Destination d= new Destination(s);return d; } public static void main(String[] args) { Parcel2 p = new Parcel2( ); // 先创建外部类对象 //创建依附在外部类对象P上的内部类对象 Destination d = p.to(“信工学院”);d. readLabel( ); Destination d2 = p.new Destination(“10级”); } // 内部类对象一定要绑定在外部类对象上 } class tc { void f( ) { Parcel2 p2=new Parcel2( ); Parcel2.Destination d = p2.new Destination(“17班); } //这时new操作符后面不能有外部类名。 } // 外部必须使用外部类.内部类来表示内部类对象的类型 ★ 归纳:创建内部类对象的注意事项 ⑴ 在外部类的非静态方法中,创建某个内部类的象,直接创建即可。静态方法中要使用.new操作符。 ◆ 典例:分析在to、和main这两个方法中,是如何创建内部类对象的。 ⑵ 外部类外定义内部类的引用时要使用包括外部类名在内的全称形式: 外部类名.内部类名 ◆ 典例:分析在class tc中,如何创建内部类引用的 重申:内部类对象一定要绑定在外部类对象上 10.2、链接到外部类 P191 1、 外部类(enclosing class)的概念 ★ 与内部类的概念相对应,也称为外围类 2、内部类自动拥有其外部类的所有成员(包括私有访问权的成员) interface Selector // 该接口的作用类似于迭代器(iterator) { boolean end(); // 检查序列是否到了末尾 Object current();// 访问当前对象 void next(); // 移到下一个对象 } ★ public class Sequence //没有实现Selector接口 { private Object[ ] items; private int next = 0; public Sequence(int size) { items = new Object [size]; } public void add(Object x) { if (next items.length) { items [next++] = x; } } ★ // 内部类 private class SequenceSelector implements Selector {
文档评论(0)