版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第8章 内部类与包装器 学前提示基本数据类型不能实例化成对象用,因而不能按照对象的思想来编程,Java中提供了包装器进行装箱、拆箱操作来解决这个问题。Java中有一种类,它声明在另一个类中,这样的类称为内部类。本章将讨论内部类和包装器的相关知识。知识要点内部类 对象包装器装箱和拆箱18.1 内部类和内部接口内部类可以分为:静态内部类、非静态内部类、局部内部类、匿名内部类。内部类都是一个独立的类,编译完后都会对应一个.class文件,文件名以“外部类类名$内部类类名.class”的形式出现。由于内部类在一个类的内部作为外部类的一个成员出现,所以它们可以任意访问外部类的成员变量而不受修饰符的限制。
2、28.1 内部类和内部接口内部类可以访问它的外部类的一切成员,包括private成员。内部类的主要好处是:高内聚、低耦合。也就是说,内部类相当于外部类的密友,外部类与其他类相当于普通朋友,密友知道外部类的所有东西,普通朋友只能知道外部类所公开的东西。下面对静态内部类、非静态内部类、局部内部类、匿名内部类一一进行说明。38.1.1 非静态内部类未使用关键字static修饰的内部类,称为是费静态内部类,它可以看作为外部类的非静态成员。定义非静态内部类等同于定义一个类的非静态成员。它的代码形式如下:public class Outer /外部类 int i; /外部类的非静态成员属性String n
3、ame;class Inner /非静态成员内部类48.1.1 非静态内部类非静态内部类有如下性质。(1)费静态内部类相当于外部类的成员,可以使用public/private/default权限修饰符修饰。(2)一个非静态内部类对象必须依附于外部类对象而存在非静态内部类可以访问外部类一切成员。(3)在非静态类内部采用外部类名.this的形式来获得其所属外部类对象。58.1.1 成员内部类内部类的实例化途径有以下几种形式:通过外部类的非静态方法实例化内部类。通过外部类的静态方法实例化内部类。68.1.1 成员内部类下面介绍前两种实例化途径。通过定义一个外部类的方法来实例化内部类,其实现代码如下:
4、参见教材P230在Outer4类中虽然没有看到外部类的实例化,但在外部类的instanceInner方法中直接实例化内部类Inner4实质上是虚拟机隐含地实例化了外部类,也就是内部类引用会默认链接到外部类的对象上。外部类的静态方法访问成员内部类,与在普通类外部访问属性或方法的方式一样。通过外部类的静态main方法实例化内部类,其实现代码如下:参见教材P230由上述Outer5类的代码可知,内部类实例可在其外部类的实例方法中创建,此新创建内部类实例所属的外部类实例自然就是创建它的外部类实例方法对应的外部类实例。78.1.2 静态内部类用static修饰的内部类称为静态内部类。静态内部类中可声明静
5、态成员或非静态成员,并且可以通过public、protected、private修饰。代码形式如下:参见教材P233非静态内部类不可拥有静态成员,静态内部类才可拥有静态成员。88.1.2 静态内部类【例8.1】StaticOuter.java。代码如下:参见教材P233在代码所在区域右击,在弹出的快捷菜单中选择Run As Java Application命令,控制台的输出结果如图8.4所示。静态内部类的对象可以由OuterClass.InnerClass in = new OuterClass.InnerClass()生成,不需要通过生成外部类对象来生成,即静态内部类的对象可以独立存在,不需
6、要依附于外部类对象。这样实际上使静态内部类成为一个顶级类。98.1.3 局部内部类局部内部类也叫方法内部类,即在方法内部定义的内部类。局部内部类的代码形式如下:public class Outer6 private String address;public void display() /方法class Inner6 /局部内部类 108.1.3 局部内部类局部内部类有如下性质。(1)在局部内部类中,如果要访问外部类的局部变量,则此变量必须是final修饰的,否则不能访问。(2)与非静态成员内部类类似,内部类的实例化必须先实例化外部类。118.1.4 匿名内部类匿名内部类就是没有名字的内部类。正因为它没有名字,所以匿名内部类是没有构造器的。在后面讲到Swing应用的时
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 如何写暖气管道合同范本
- 安装灯饰合同范本
- 2024年度供货合作模板协议文件
- 农副产品包装运输合同范本
- 二手房交易居间服务协议2024年规范
- 2024年项目所有权变更协议
- 水库管护员合同范本
- 2024年劳务中介服务协议
- 大学生网上签约合同范本
- 2024车位所有权变更协议范本
- xx学校未成年人性教育工作方案
- 2024-2030年组氨酸行业市场现状供需分析及投资评估规划分析研究报告
- 教育信息化教学资源建设规划
- 屠宰场食品安全管理制度
- 部编版(2024秋)语文一年级上册 6 .影子课件
- 2024秋期国家开放大学专科《刑事诉讼法学》一平台在线形考(形考任务一至五)试题及答案
- 病例讨论英文
- 2024秋期国家开放大学专科《液压与气压传动》一平台在线形考(形考任务+实验报告)试题及答案
- 【课件】植物体的结构层次课件-2024-2025学年人教版生物七年级上册
- 24秋国家开放大学《0-3岁婴幼儿的保育与教育》期末大作业参考答案
- 相对湿度计算公式
评论
0/150
提交评论