JAVA语言程序设计
第二章 类与对象的基本概念
清华大学 郑 莉
1
JAVA语言程序设计
清华大学 郑莉
内容
面向对象的程序设计方法概述 ? 类与对象 ? 对象初始化和回收 ? 包的概念 ? 应用举例 ? UML简介
?
2
JAVA语言程序设计
清华大学 郑莉
什么是对象?
现实世界中万物皆对象 ? 现实中的对象都具有外观长相(状态) 和行为举措
?
3
JAVA语言程序设计
清华大学 郑莉
什么是对象?
程序中一切都是对象 ? 软件的对象有 标识 (identity), 状态 和行为 (方法)
?
– 一个软件对象通过一个或多个变量来保 存其状态。 – 软件对象通过方法(method,也被译作 函数) 实现他的行为。
4
JAVA语言程序设计
清华大学 郑莉
抽象
?
现实世界中
– 很多对象属于同一类。 – 根据同一个设计图纸制造很多自行车。
?
面向对象的
软件中
– 很多对象属于同一类。 – 软件中对象的“设计图”被称作类。
5
JAVA语言程序设计
清华大学 郑莉
抽象
?
数据 (状态)抽象
– 描述一类相似物体的属性和状态 – 利用这些属性来区分不同的对象
?
代码 (行为或函数)抽象
– 描述一类相似物体的公共行为或函数
6
JAVA语言程序设计
清华大学 郑莉
抽象的例子
钟表 ? 数据(状态)
– int Hour; int Minute; int Second;
?
函数(行为)
– SetTime(); ShowTime();
7
JAVA语言程序设计
清华大学 郑莉
抽象的例子
人 ? 数据
– char *name; char *gender; int age; int id;
?
行为
– 生物行为
Eat(), Step(),…
– 社会行为
Work(), Study(),…
8
JAVA语言程序设计
清华大学 郑莉
封装
?
封装是一种信息隐蔽技术,就是指利用抽 象数据类型将数据和基于数据的操作封装 在一起。
– 一个清楚的边界,所有对象的内部信息被限定 在这个边界内; – 一个接口,即该对象向外界提供的方法,外界 可以通过这些方法与该对象进行交互; – 受保护的内部实现,这个实现给出了由软件对 象提供的功能的细节,实现细节不能在定义这 个对象的类的外面访问。
9
JAVA语言程序设计
清华大学 郑莉
继承
继承是指新类可以获得已有类(称为 父类)的属性和行为,称新类是已有 类的子类。 ? Java语言仅支持单重继承。
?
10
JAVA语言程序设计
清华大学 郑莉
多态
多态是指一个程序中同名的不同方法 共存的情况。主要通过子类对父类方 法的覆盖来实现多态。 ? 不同类的对象可以响应相同的消息 (方法)来完成不同的功能,这些方 法的具体实现也可以不同。
?
11
JAVA语言程序设计
清华大学 郑莉
类
把相似的对象抽象为类 ? 一个类是对一种对象的描述。 ? 类是构造对象的模板。 它模仿
问题中
思想或概念
?
12
JAVA语言程序设计
清华大学 郑莉
类的声明
[public] [abstract | final] class 类名称 [extends 父类名称] [implements 接口名称列表] { 数据成员定义及初始化; 方法定义; } public:访问控制 abstract :抽象类(abstract class) – 不完全的类。含有抽象函数(abstract method)的类 必须是抽象类。 final:终结类(final class) – 终结类的定义是完全的,这种类不能生成子类。
13
JAVA语言程序
设计 清华大学 郑莉
数据成员(Field)
? 存储数据 ? 区分不同的对象
? 数据成员的声明
声明变量名称时要说明变量类型。声 明形式如下: 变量类型 变量名称;
14
JAVA语言
程序设计
清华大学 郑莉
方法(Method)
方法操作变量或对象 ? 一个方法就是一段程序
?
15
JAVA语言程序设计
清华大学 郑莉
方法的声明
方法修饰 返回类型 方法名(参数
列表) {方法体}
常用的方法修饰:
– public、protected、private 为存取控制符; – static指明方法是一个类方法; – final指明方法是一个终结方法; – abstract指明方法是一个抽象方法;
16
JAVA语言程序设计
清华大学 郑莉
类的声明举例
public class Clock { private int hour; private int minute; private int second; public void setTime(int newH, int newM, int newS) { hour=newH; minute=newM; second=newS; } public