版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、.1第四章第四章 类类 和和 对对 象象.2教学目标教学目标n理解数据抽象和数据隐藏n创建类n能够创建和使用对象n能够控制对实例变量和方法的访问n方法的重载n构造函数的使用n理解this引用的用法n理解Java的垃圾收集机制nstatic方法和域的使用n类的组合n包的创建和使用.34.1 面向对象程序设计的思想面向对象程序设计的思想n4.1.1 OOP思想n4.1.2 用类实现抽象数据类型:时钟类 n4.1.3 类成员:构造函数、方法和域 .44.1.1 OOP思想思想n面向对象编程技术n将数据及对数据的操作封装在一起而形成了类,类是描述相同类型的对象集合。 。面向对象编程(object-or
2、iented programming,OOP)就是定义这些类。n类作为抽象的数据类型用于创建类的对象。n程序的执行,表现为一组对象之间的交互通信。对象之间通过公共接口进行通信,从而完成系统功能。对象的公共接口是该对象的应用程序编程接口(Application Programming Interface,API),把对象的内部详细信息隐藏起来,使得对象变得抽象,将这种技术称为数据的抽象化。nJava语言是完全面向对象的语言,程序的结构由一个以上的类组成。所有的过程都被封装起来,并将它们称之为方法。.54.1.2 用类实现抽象数据类型:时钟类用类实现抽象数据类型:时钟类n类作为一种抽象的数据类型,
3、封装了对象的数据属性和动态行为,被用来定义类的对象。n下面我们将通过一个具体的实例来理解什么是类,如何定义类、创建对象和使用对象。n时钟类的设计:(1) 数据属性: 时(int hour); 分 (int minute); 秒(int second)。(2) 行为: 设置时间 setTime() ; 显示时间 toUniversalString() 、 toStandardString() ; 走时 (暂时不考虑); .64.1.2 用类实现抽象数据类型:时钟类(续)用类实现抽象数据类型:时钟类(续)例4-1 时钟类的实现。 该例子包含两个文件Time1.java和TimeTest1.java
4、。n Time1.java是用于定义时钟类。n TimeTest1类是一个用于测试时钟类的包含main方法的主类,在main方法中将创建Time1类的一个对象,并调用对象的公共方法。.74.1.2 用类实现抽象数据类型:时钟类(续)用类实现抽象数据类型:时钟类(续)Time1.java文件的代码如下:import java.text.DecimalFormat; public class Time1 extends Object private int hour; private int minute; private int second; public Time1() setTime( 0
5、, 0, 0 );public void setTime( int h, int m, int s ) hour = ( ( h = 0 & h = 0 & m = 0 & s 60 ) ? s : 0 );时分秒设置时间.84.1.2 用类实现抽象数据类型:时钟类(续)用类实现抽象数据类型:时钟类(续)public String toUniversalString() /toUniversalString方法以24时制格式显示时间 DecimalFormat twoDigits = new DecimalFormat( 00 ); return twoDigits.f
6、ormat( hour ) + : + twoDigits.format( minute ) + : + twoDigits.format( second ); public String toStandardString() /toStandardString方法以12时制格式显示时间 DecimalFormat twoDigits = new DecimalFormat( 00 ); return ( (hour = 12 | hour = 0) ? 12 : hour % 12 ) + : + twoDigits.format( minute ) + : + twoDigits.form
7、at( second ) + ( hour = 0 & h = 0 & m = 0 & s 60 ) ? s : 0 ); 带有一个参数的setTime方法带有两个参数的setTime方法带有三个参数的setTime方法.274.5 初始化类的对象:构造函数初始化类的对象:构造函数 n构造方法用于为类的新建的对象分配内存空间和进行初始化,如例4-1在Time1类中创建了一个构造函数(不带任何参数)。在构造函数中对三个成员变量进行了初始化。构造函数只能在创建对象时用new命令调用。定义必须构造函数时,注意两点:构造方法必须与其类名相同;构造方法必须与其类名相同;构造方法没
8、有返回值,但可以有参数,构造方法没有返回值,但可以有参数,并且可以重载。并且可以重载。.284.5 初始化类的对象:构造函数(续)初始化类的对象:构造函数(续)例4-5举例说明构造函数的重载。 Time4.java文件的部分代码: /5个重载的构造函数 public Time4() setTime( 0, 0, 0 ); public Time4( int h ) setTime( h, 0, 0 ); public Time4( int h, int m ) setTime( h, m, 0 ); public Time4( int h, int m, int s ) setTime( h,
9、 m, s ); public Time4( Time4 time ) setTime( time.hour, time.minute, time.second ); 不带参数的构造函数带一个参数的构造函数带两个参数的构造函数带三个参数的构造函数带一个参数为对象的构造函数.294.6 thisnthis定义为被调用的方法的当前对象的引用。this引用仅能出现在类中的方法中。n例4-6 this的使用例子说明如何隐式地和显式地使用this引用。例子中SimpleTime类的构造方法的三个参数名与SimpleTime类三个成员变量名相同。在这种情况下,局部变量在该方法作用域中屏蔽了同名的域。我们可
10、以使用this来显式地引用屏蔽的域。通过this不但可以引用成员变量,也可通过this引用方法,包括构造函数。本例子中通过this引用方法。.304.7 垃圾收集垃圾收集nJava平台允许创建任意个对象(当然会受到系统资源的限制),而且当对象不再使用时自动会被清除,这个过程就是所谓的“垃圾收集”。当对象不再被引用的时候,对象就会被作为垃圾收集的对象而清除。为了使对象不再被引用,可以通过设置执行指向某一对象的引用为null。例如:Time1 time=new Time1();Time=null;1垃圾收集器垃圾收集器2撤销方法撤销方法finalize.314.8 static方法和域方法和域n当
11、声明一个成员变量时,可以指定成员变量是属于一个类的所有对象共享static (称为类的变量),还是属于一个类的各个对象所拥有( 称为实例变量,是类的实例拥有)。类的变量又称为静态成员,以关键字static声明。例如: static int count;类的静态成员的使用格式一般为:类名.静态变量名;类名.静态方法名();n例4-7 静态方法和域的应用.324.9 类的组合类的组合n一个类中的成员可以是其他类的引用,这叫类的组合。n例4-8 类的组合.334.10 包的创建和访问包的创建和访问n4.10.1 包的创建 n4.10.2 包的使用 .344.10.1 包的创建包的创建n 建立一个包时
12、,使用package语句。package语句必须是整个java文件的第一个语句。创建package语句格式: package 包名;n例如: 将在当前目录下创建一个包,包名为.sytu.it.ch04,Time1放在此包中。package .sytu.it.ch04;public class Time1 .354.10.2 包的使用包的使用nimport语句用于导入用户的源代码文件中使用的其他包中的类,这些类和当前类不在同一个包中。例如:import .sytu.it.ch04.Time1; nimport .sytu.it.ch04.*; *表示导入整个包,即导入整个子包.sytu.it.ch04中的所有类,但不包括.sytu.it.ch04中子包。n如果没有使用import语句导入某个包,但又想使用它的某个类,也可以直接在所需要的类名前加上包名前缀。前缀。例如,要使用类Time1类创建一个对象time,语句如下: .sytu.it.ch04.Time1 time;例4-9 包的创建及使用.36小结小结 n本章介绍了面向对象程序设计的重要概念类和对象。类是一种抽象的数据类型,用来表
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 企业团队成员能力评估及发展计划表
- 2025年副科选拔面试题及答案
- 驾驶机动车常识考试题及答案
- 公司内审流程标准化管理手册
- 交通安全课件
- 五年级上册《食物链和食物网》
- 《分子动理论实验教程》
- 建筑设计师项目设计与实施绩效考妤核表
- 小学消防安全课件
- 委内瑞拉贷款协议书
- 2025年江西省直遴选面试真题附带题目详解及答案
- 2024年六西格玛黑带认证高级考试真题(含答案解析)
- 乐山大佛课件
- 2025年物业管理行业职业技能竞赛物业管理员考试试题真题及答案
- 《2025年下半年事业单位考试职业能力倾向测验真题及解析》
- 义务教育优-质均衡发展创建省级督导评估迎检方案
- 石家庄写字楼市场调研报告
- 仓库货物盘点流程与货物分类标准化操作指南
- 5.3 一元一次方程的应用(2)-盈不足问题教学设计-北师大版(2024)七年级数学上学期
- 【初中政治】敬畏生命课件-2025-2026学年统编版道德与法治七年级上册
- GB 5725-2025坠落防护安全网
评论
0/150
提交评论