一章类和对象课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《一章类和对象课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 一章类 对象 课件
- 资源描述:
-
1、面向对象的程序设计第第 3 章章 类类和对象和对象雷擎雷擎对外经济贸易大学信息学院对外经济贸易大学信息学院面向对象的程序设计对外经济贸易大学 雷擎content3.1 面向对象程序设计的概念面向对象程序设计的概念3.2 类和对象类和对象3.3 内部类内部类3.4 对象的初始化和清除对象的初始化和清除3.5 包包 实验:类的定义和使用实验:类的定义和使用面向对象的程序设计对外经济贸易大学 雷擎3.1 面向对象程序设计的概念面向对象程序设计的概念o 面向对象的程序设计面向对象的程序设计n 与结构化程序设计方法相比,更符合人类认识与结构化程序设计方法相比,更符合人类认识现实世界的思维方式现实世界的思
2、维方式 n 已成为程序设计的主流方向已成为程序设计的主流方向n 涉及的主要概念涉及的主要概念o 抽象抽象o 封装封装o 继承继承o 多态多态 面向对象的程序设计对外经济贸易大学 雷擎1.抽象抽象o 忽略问题中与当前目标无关的方面,以便更忽略问题中与当前目标无关的方面,以便更充分地注意与当前目标有关的方面充分地注意与当前目标有关的方面o 计算机软件开发中所使用的抽象有计算机软件开发中所使用的抽象有n 数据抽象数据抽象(数据和操作结合在一起数据和操作结合在一起)n 过程抽象过程抽象(功能划分,隐藏具体实现细节功能划分,隐藏具体实现细节)面向对象的程序设计对外经济贸易大学 雷擎抽象例子抽象例子1:学
3、生选课学生选课class Student int stid;String stname;class Courseint coid;String coname;int total;int rest;Studentstudents;面向对象的程序设计对外经济贸易大学 雷擎抽象例子抽象例子1:学生选课学生选课o 学生学生n 数据数据(属性属性)o int stid;o String stname;n 方法方法(行为行为)o void registerCourse();o void unRegCourse();面向对象的程序设计对外经济贸易大学 雷擎抽象例子抽象例子2:钟表:钟表o 数据数据(属性属性
4、)n int hour;n int minute;n int second;o 方法方法(行为行为)n void setTime();n void showTime();面向对象的程序设计对外经济贸易大学 雷擎抽象例子抽象例子3:灯:灯o数据数据(属性属性)n boolean status;o方法方法(行为行为)n void on();n void off();面向对象的程序设计对外经济贸易大学 雷擎2.封装封装o 是一种信息隐蔽技术是一种信息隐蔽技术o 利用抽象数据类型将数据和基于数据的操作利用抽象数据类型将数据和基于数据的操作封装在一起封装在一起o 用户只能看到对象的封装界面信息,对象的用
5、户只能看到对象的封装界面信息,对象的内部细节对用户是隐蔽的内部细节对用户是隐蔽的o 封装的目的在于将对象的使用者和设计者分封装的目的在于将对象的使用者和设计者分开,使用者不必知道行为实现的细节,只需开,使用者不必知道行为实现的细节,只需使用设计者提供的消息来访问对象使用设计者提供的消息来访问对象面向对象的程序设计对外经济贸易大学 雷擎封装的定义封装的定义o 清楚的边界清楚的边界n 所有对象的内部信息被限定在这个边界内所有对象的内部信息被限定在这个边界内o 接口接口n 对象向外界提供的方法,外界可以通过这些方对象向外界提供的方法,外界可以通过这些方法与对象进行交互法与对象进行交互o 受保护的内部
6、实现受保护的内部实现n 功能的实现细节,不能从类外访问。功能的实现细节,不能从类外访问。面向对象的程序设计对外经济贸易大学 雷擎封装例子:钟表封装例子:钟表private int hour;private minute;private second;public void setTime();public showTime();面向对象的程序设计对外经济贸易大学 雷擎封装的意义封装的意义o 在面向对象的程序设计中,在面向对象的程序设计中,类类封装了数据及封装了数据及对数据的操作,是程序中的对数据的操作,是程序中的最小模块最小模块o 禁止了外界直接操作类中的数据禁止了外界直接操作类中的数据,模块
7、与模,模块与模块之间只能通过严格控制的接口进行交互,块之间只能通过严格控制的接口进行交互,这使得模块之间的偶合度大大降低这使得模块之间的偶合度大大降低o 保证了模块具有较好的保证了模块具有较好的独立性独立性,程序维护和,程序维护和修改较为容易修改较为容易面向对象的程序设计对外经济贸易大学 雷擎3.继承继承o 是指新的类可以获得是指新的类可以获得已有类(称为超类、已有类(称为超类、基类或父类)的属性基类或父类)的属性和行为,称新类为已和行为,称新类为已有类的派生类(也称有类的派生类(也称为子类)为子类)o 在继承过程中派生类在继承过程中派生类继承了基类的特性,继承了基类的特性,包括方法和实例变量
8、包括方法和实例变量o 派生类也可修改继承派生类也可修改继承的方法或增加新的方的方法或增加新的方法,使之更适合特殊法,使之更适合特殊的需要的需要o 有助于解决软件的可有助于解决软件的可重用性问题,使程序重用性问题,使程序结构清晰,降低了编结构清晰,降低了编码和维护的工作量码和维护的工作量面向对象的程序设计对外经济贸易大学 雷擎4.多态多态o 一个程序中同名的不同方法共存一个程序中同名的不同方法共存o 主要通过子类对父类方法的覆盖来实现主要通过子类对父类方法的覆盖来实现o 不同类的对象可以响应同名的消息不同类的对象可以响应同名的消息(方法方法),具体,具体的实现方法却不同的实现方法却不同o 使语言
9、具有灵活、抽象、行为共享、代码共享的优使语言具有灵活、抽象、行为共享、代码共享的优势,很好地解决了应用程序方法同名问题势,很好地解决了应用程序方法同名问题2.1 面向对象的程序设计方法概述面向对象的程序设计方法概述面向对象的程序设计对外经济贸易大学 雷擎面向对象程序设计面向对象程序设计o 基本组成单位是类基本组成单位是类o 程序在运行时由类生成对象,对象是面向对程序在运行时由类生成对象,对象是面向对象程序的核心象程序的核心o 对象之间通过发送消息进行通信,互相协作对象之间通过发送消息进行通信,互相协作完成相应功能完成相应功能面向对象的程序设计对外经济贸易大学 雷擎对象对象o 现实世界中现实世界
10、中n 万物皆对象万物皆对象n 都具有都具有各自的属性,对外界都呈现各自的行为各自的属性,对外界都呈现各自的行为 o 程序中程序中n 一切都是对象一切都是对象n 都具有标识都具有标识(identity),属性和行为属性和行为(方法方法)o 通过一个或多个变量来保存其状态通过一个或多个变量来保存其状态o 通过方法通过方法(method)实现他的行为实现他的行为面向对象的程序设计对外经济贸易大学 雷擎类类o 将属性及行为相同或相似的对象归为一类将属性及行为相同或相似的对象归为一类o 类可以看成是对象的抽象,代表了此类对象类可以看成是对象的抽象,代表了此类对象所具有的共有属性和行为所具有的共有属性和行
11、为o 在面向对象的程序设计中,每一个对象都属在面向对象的程序设计中,每一个对象都属于某个特定的类于某个特定的类面向对象的程序设计对外经济贸易大学 雷擎Java中类与对象的关系中类与对象的关系o 类是一种复合数据类型,是类是一种复合数据类型,是Java程序的基程序的基本组成要素,描述了一类对象的状态和行为,本组成要素,描述了一类对象的状态和行为,其基本成分包括:其基本成分包括:n 成员变量成员变量n 成员方法成员方法o 类相当于程序中数据类型,对象是一个具体类相当于程序中数据类型,对象是一个具体的变量。的变量。BACK面向对象的程序设计对外经济贸易大学 雷擎3.2 类和对象类和对象o 3.2.1
12、 类的定义类的定义o 3.2.2 对象的创建与使用对象的创建与使用o 3.2.3 类成员变量类成员变量o 3.2.4 类成员方法类成员方法o 3.2.5 静态代码块静态代码块o 3.2.6 访问控制访问控制BACK面向对象的程序设计对外经济贸易大学 雷擎3.2.1 类的定义类的定义o 定义形式定义形式public abstract|final class 类名称类名称 extends 父类名称父类名称 implements 接口名称列表接口名称列表 变量成员声明及初始化;变量成员声明及初始化;方法声明及方法体;方法声明及方法体;面向对象的程序设计对外经济贸易大学 雷擎最简单的类最简单的类cla
13、ss Lightclass CircleBACK面向对象的程序设计对外经济贸易大学 雷擎3.2.2 对象的对象的创建创建与与使使用用o 变量和对象变量和对象n 变量除了存储基本数据类型的数据,还能存储变量除了存储基本数据类型的数据,还能存储对象的引用,用来存储对象引用的变量称为引对象的引用,用来存储对象引用的变量称为引用变量用变量n 类的对象也称为类的实例类的对象也称为类的实例面向对象的程序设计对外经济贸易大学 雷擎创建对象创建对象o 创建对象的两个步骤创建对象的两个步骤 声明对象名声明对象名 分配内存空间分配内存空间面向对象的程序设计对外经济贸易大学 雷擎 对象的声明对象的声明o 格式格式类
14、名称类名称 变量名称变量名称 例如例如Circle是已经声明的类名,则下面语句声明是已经声明的类名,则下面语句声明的变量的变量acircle将用于存储该类对象的引用:将用于存储该类对象的引用:Circle aCircle;o 声明一个引用变量时并没有对象生成声明一个引用变量时并没有对象生成面向对象的程序设计对外经济贸易大学 雷擎 分配内存空间分配内存空间o 生成实例的格式:生成实例的格式:new()例如:例如:aCircle=new Circle()其作用是:其作用是:n 在内存中为此对象分配内存空间在内存中为此对象分配内存空间n 返回对象的引用返回对象的引用(reference,相当于对象的
15、,相当于对象的存储地址存储地址)o 变量可以被赋以空值变量可以被赋以空值例如:例如:aCircle=null;面向对象的程序设计对外经济贸易大学 雷擎类的使用类的使用o 格式:格式:对象名对象名.成员成员n 成员包括成员方法和成员变量成员包括成员方法和成员变量n 例:例:int x=Integer.MAX;System.out.println(String s);BACK面向对象的程序设计对外经济贸易大学 雷擎3.2.3 类成员变量类成员变量o声明格式声明格式public|protected|private staticfinaltransient volatile变量数据类型变量数据类型变量
16、名变量名1=变量初值变量初值,变量名变量名2=变量初值变量初值,;面向对象的程序设计对外经济贸易大学 雷擎类成员变量的分类类成员变量的分类o 类成员变量分为两类:类成员变量分为两类:实例变量实例变量o声明时没有声明时没有static修饰修饰 类变量(静态变量)类变量(静态变量)o声明时用声明时用static修饰修饰面向对象的程序设计对外经济贸易大学 雷擎 实例变量实例变量o 变量声明中没有变量声明中没有static修饰。修饰。o 变量所指向的对象必须有创建的步骤变量所指向的对象必须有创建的步骤,如果,如果所属的对象没有被创建,对象就不存在。所属的对象没有被创建,对象就不存在。o 所有对象都是实
17、例成员变量。所有对象都是实例成员变量。o 引用格式:引用格式:n 对象名对象名.实例变量实例变量面向对象的程序设计对外经济贸易大学 雷擎类的实例变量成员的定义类的实例变量成员的定义class Lightboolean status=false;/数据类型数据类型 变量名初始化值变量名初始化值class Circle int radius=0;面向对象的程序设计对外经济贸易大学 雷擎 类变量(静态变量)类变量(静态变量)o 声明时需加声明时需加static修饰符修饰符o 不管类的对象有多少,类变量只存在一份,在整个不管类的对象有多少,类变量只存在一份,在整个类中只有一个值类中只有一个值o 类初始
18、化的同时就被赋值类初始化的同时就被赋值o 适用情况适用情况n类中所有对象都相同的属性类中所有对象都相同的属性n经常需要共享的数据经常需要共享的数据n系统中用到的一些常量值系统中用到的一些常量值o 引用格式引用格式.面向对象的程序设计对外经济贸易大学 雷擎类变量(静态变量)例子类变量(静态变量)例子class Circle static double PI=3.1415926535 int radius=0;面向对象的程序设计对外经济贸易大学 雷擎Java的类成员变量定义练习的类成员变量定义练习1o 用一个类来描述三维空间中的球用一个类来描述三维空间中的球n 类名:类名:Balln 成员变量:成
19、员变量:球心坐标球心坐标 x球心坐标球心坐标 y球心坐标球心坐标 z半径半径 radius颜色颜色colorn 定义一个测试类定义一个测试类BallTester,说明两个,说明两个Ball类类型的变量型的变量b1、b2,分别给他们的成员变量赋值,分别给他们的成员变量赋值,并打印出他们的半径。并打印出他们的半径。面向对象的程序设计对外经济贸易大学 雷擎Java的类成员变量定义练习的类成员变量定义练习2o 用一个类来定义银行帐号用一个类来定义银行帐号n 类名:类名:BankAccountn 成员变量成员变量姓名姓名(ownerName)帐号帐号(accountNumber)余额余额(balance
20、)利率利率(rate)/静态变量静态变量n 定义一个测试类定义一个测试类BankAccountTester,说,说明两个明两个BankAccount类的变量类的变量b1、b2,分,分别给他们的成员变量赋值,分别打印出两个变别给他们的成员变量赋值,分别打印出两个变量的各成员变量量的各成员变量面向对象的程序设计对外经济贸易大学 雷擎比较实例变量和静态变量的访问比较实例变量和静态变量的访问o 在例在例1和例和例2的测试类中:的测试类中:n 分别在创建对象之前,使用类名来访问实例变分别在创建对象之前,使用类名来访问实例变量和静态变量,如量和静态变量,如BallTester.color等等n 分别在创建
21、对象之后,使用类名来访问实例变分别在创建对象之后,使用类名来访问实例变量和静态变量,如量和静态变量,如BallTester.color等等n 比较结果,观察现象比较结果,观察现象BACK面向对象的程序设计对外经济贸易大学 雷擎3.2.4 类类成员成员方法方法o 成员方法成员方法n 定义类的行为定义类的行为o 一个对象能够做的事情一个对象能够做的事情o 我们能够从一个对象取得的信息我们能够从一个对象取得的信息n 类里可以不定义成员方法,也可以定义多个;类里可以不定义成员方法,也可以定义多个;一旦在类中声明了方法,它就成为了类声明的一旦在类中声明了方法,它就成为了类声明的一部分一部分o 成员方法分
22、为实例方法和类方法成员方法分为实例方法和类方法面向对象的程序设计对外经济贸易大学 雷擎方法成员方法成员声明声明o 声明格式声明格式public|protected|private static final abstract nativesynchronized返回类型返回类型 方法名方法名(参数列表参数列表)throws exceptionList方法体方法体面向对象的程序设计对外经济贸易大学 雷擎类成员方法的分类类成员方法的分类o 类成员方法分为两类:类成员方法分为两类:实例方法实例方法o声明时没有声明时没有static修饰修饰 类方法(静态方法)类方法(静态方法)o声明时用声明时用stat
23、ic修饰修饰面向对象的程序设计对外经济贸易大学 雷擎 实例方法实例方法o 方法声明中没有方法声明中没有static修饰。修饰。o 实例方法表示特定对象的行为实例方法表示特定对象的行为。在使用实例。在使用实例方法之前,必须实例化类,即必须创建引用方法之前,必须实例化类,即必须创建引用变量指向的对象,通过对象来引用。如果对变量指向的对象,通过对象来引用。如果对象没有被创建,则方法就不能调用。象没有被创建,则方法就不能调用。o 引用格式:引用格式:n 对象名对象名.实例方法实例方法面向对象的程序设计对外经济贸易大学 雷擎常用的实例方法常用的实例方法o set方法和方法和get方法方法n set()是
24、给属性赋值的方法,是给属性赋值的方法,get()是取得属性是取得属性值的方法。值的方法。n 在在java程序中成员属性一般用程序中成员属性一般用private限制访限制访问,不允许直接属性直接操作,只能通过问,不允许直接属性直接操作,只能通过set()和和get()访问,使得访问,使得java程序具有很好的封装程序具有很好的封装性和安全性。性和安全性。面向对象的程序设计对外经济贸易大学 雷擎例:例:set方法的定义方法的定义public class Circledouble r=0;/成员变量成员变量String color=“white”;/成员变量成员变量public void setR(
25、double num)r=num;/给给r赋值为参数赋值为参数num的值的值public void setColor(String str)color=str;/给给color赋值为参数赋值为参数str的的值值面向对象的程序设计对外经济贸易大学 雷擎例:例:set方法的引用方法的引用public class CircleTesterpublic static void main(String str)Circle c1,c2;c1=new Circle();/创建对象创建对象c1.setR(3);c1.setColor(“red”);c2=new Circle();/创建对象创建对象c2.se
展开阅读全文