Java面向对象程序设计第4章-类与对象分析课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《Java面向对象程序设计第4章-类与对象分析课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 面向 对象 程序设计 分析 课件
- 资源描述:
-
1、2010-1-101Java面向对象程序设计面向对象程序设计 第第4章章类与对象 2010-1-102主要内容主要内容类类对象对象参数传值参数传值对象组合对象组合static关键字关键字this关键字关键字包包import语句语句jar文件文件难点难点参数传值与对象组合参数传值与对象组合包和包和import语句语句导读导读2010-1-1034.1 编程语言的几个发展阶段编程语言的几个发展阶段 面向机器语言面向机器语言 面向过程语言面向过程语言 面向对象语言面向对象语言 面向对象编程主要体现下列三个特性 封装性 继承 多态 2010-1-1044.2 类类 类类是组成是组成JavaJava程序
2、的基本要素。类封装了程序的基本要素。类封装了一类对象的状态和方法。类是用来定义对象的一类对象的状态和方法。类是用来定义对象的模板。模板。 类的实现包括两部分:类声明和类体。基类的实现包括两部分:类声明和类体。基本格式为:本格式为:class class 类名类名 类体的内容类体的内容 2010-1-1054.2.1 类声明类声明 类声明类声明 :class 类名类名 如:class People”和“class 动物”称作类声明;“People”和“动物”分别是类名。 给类命名时,遵守下列编程风格(这不是语法要求给类命名时,遵守下列编程风格(这不是语法要求的,但应当遵守):的,但应当遵守):1
3、如果类名使用拉丁字母,那么名字的首字母使用大写字母,如。 2类名最好容易识别、见名知意。当类名由几个“单词”复合而成时,每个单词的首字母使用大写。 2010-1-1064.2.2 类体类体 类声明之后的一对大括号类声明之后的一对大括号“”,“”以及它以及它们之间的内容称作类体,大括号之间的内容称作们之间的内容称作类体,大括号之间的内容称作类体的内容。类体的内容。 类体的内容由两部分构:一部分是变量的声明,类体的内容由两部分构:一部分是变量的声明,用来刻画属性;另一部分是方法的定义,用来刻用来刻画属性;另一部分是方法的定义,用来刻画功能。画功能。 2010-1-1074.2.3 成员变量和局部变
4、量成员变量和局部变量 类体中类体中变量声明部分所声明的变量被称作类的成员变量。在方法体中声明的变量和方法的参数被称作局部变量。 1变量的类型:变量的类型:成员变量和局部变量的类型可以是Java中的任何一种数据类型,包括基本类型:整型、浮点型、字符型;引用类型:数组、对象和接口(对象和接口见后续内容)。2变量的有效范围:变量的有效范围:成员变量在整个类内都有效,局部变量只在声明它的方法内有效。方法参数在整个方法内有效,方法内的局部变量从声明它的位置之后开始有效。3实例变量与类变量:实例变量与类变量:在声明成员变量时,用关键字static给予修饰的称作类变量,否则称作实例变量(类变量也称为stat
5、ic变量,静态变量)。4成员变量的隐藏:成员变量的隐藏:如果局部变量的名字与成员变量的名字相同,则成员变量被隐藏,即这个成员变量在这个方法内暂时失效。 5编程风格编程风格(1)一行只声明一个变量。 (2)变量的名字符合标识符规定。 (3)变量名字见名知意,避免容易混淆的变量名字。2010-1-1084.2.4 方法方法 方法的定义包括两部分:方法声明和方法体。一般格方法的定义包括两部分:方法声明和方法体。一般格式为:式为:方法声明部分方法声明部分 方法体的内容方法体的内容 1方法声明 方法声明包括方法名和方法的返回类型,如:float area() 注:注:方法的返回类型方法的返回类型、方法的
6、参数、方法的名字方法的参数、方法的名字 2方法体 方法声明之后的一对大括号“” ,“”以及之间的内容称作方法的方法体。方法体的内容包括局部变量的声明和Java语句。 2010-1-1094.2.5 方法重载方法重载 方法重载的意思是:一个类中可以有多个方法重载的意思是:一个类中可以有多个方法具有相同的名字,但这些方法的参数必须方法具有相同的名字,但这些方法的参数必须不同,即或者是参数的个数不同,或者是参数不同,即或者是参数的个数不同,或者是参数的类型不同。的类型不同。 2010-1-10104.2.6 构造方法构造方法 构造方法是一种特殊方法,构造方法是一种特殊方法,它的名字必须它的名字必须与
7、它所在的类的名字完全相同,而且没有类型,与它所在的类的名字完全相同,而且没有类型,构造方法也可以重载。构造方法也可以重载。 2010-1-10114.2.7 类方法和实例方法类方法和实例方法 方法声明时,方法类型前面不加关键字方法声明时,方法类型前面不加关键字staticstatic修饰的是实例方法、加修饰的是实例方法、加staticstatic修饰的是修饰的是类方法(静态方法)。类方法(静态方法)。 2010-1-10124.2.8 几几个值得注意的问题个值得注意的问题 1 1对成员变量的操作只能放在方法中,方对成员变量的操作只能放在方法中,方法可以对成员变量和该方法体中声明的局部变法可以对
8、成员变量和该方法体中声明的局部变量进行操作。量进行操作。 2 2需要注意的是:实例方法既能对类变量操需要注意的是:实例方法既能对类变量操作也能对实例变量操作,而类方法只能对类变作也能对实例变量操作,而类方法只能对类变量进行操作。量进行操作。 3 3一个类中的方法可以互相调用,实例方法一个类中的方法可以互相调用,实例方法可以调用该类中的其它方法;类中的类方法只可以调用该类中的其它方法;类中的类方法只能调用该类的类方法,不能调用实例方法。能调用该类的类方法,不能调用实例方法。 2010-1-10134.3 对象对象4.3.1 创建对象创建对象 1 1对象的声明对象的声明 People zhangP
9、ing; 2.2.为声明的对象分配内存为声明的对象分配内存 zhangPing=new People();zhangPing=new People(); 例例4-1,4-1,例例4-24-23 3对象的内存模型对象的内存模型 (1 1)声明对象时的内存模型声明对象时的内存模型(2 2)对象分配内存后的内存模型对象分配内存后的内存模型4 4创建多个不同的对象创建多个不同的对象 2010-1-10144.3.2 使用对象使用对象 1 1通过使用运算符通过使用运算符“.” “.” 对象操作自己的变量对象操作自己的变量(对象的属性)(对象的属性) 2 2使用运算符使用运算符“.”,“.”,对象调用类中
10、的方法(对对象调用类中的方法(对象的功能)象的功能) 例例4-34-3 2010-1-10154.3.3 对象的引用和实体对象的引用和实体 当用类创建一个对象时,类中当用类创建一个对象时,类中的成员变量在分配内存空间,这的成员变量在分配内存空间,这些内存空间些内存空间称作称作该对象的实体或该对象的实体或对象的变量,而对象中存放着引对象的变量,而对象中存放着引用。用。 一个类创建的两个对象,如果一个类创建的两个对象,如果具有相同的引用,那么就具有完具有相同的引用,那么就具有完全相同的实体。全相同的实体。 2010-1-10164.4 参数传值参数传值 4.4.1 基本数据类型参数的传值基本数据类
11、型参数的传值 对于基本数据类型的参数,向该参数传递对于基本数据类型的参数,向该参数传递的值的级别不可以高于该参数的级别的值的级别不可以高于该参数的级别 。 例例4-44-4 2010-1-10174.4.2 引用类型参数的传值引用类型参数的传值 当参数是引用类型时,当参数是引用类型时,“传值传值”传递的是变传递的是变量中存放的量中存放的“引用引用”,而不是变量所引用的实体。,而不是变量所引用的实体。 例例4-54-5 2010-1-10184.4.3 可变参数可变参数 可变参数是指在声明方法时不给出参数列表可变参数是指在声明方法时不给出参数列表中从某项直至最后一项参数的名字和个数,但这中从某项
12、直至最后一项参数的名字和个数,但这些参数的类型必须相同。可变参数使用些参数的类型必须相同。可变参数使用“”表表示若干个参数,这些参数的类型必须相同,最后示若干个参数,这些参数的类型必须相同,最后一个参数必须是参数列表中的最后一个参数。一个参数必须是参数列表中的最后一个参数。 例如:例如: public void f(int . x)public void f(int . x) 例例4-64-62010-1-10194.4.4 有理数的类封装有理数的类封装 面向对象编程核心思想之一就是将数据和对面向对象编程核心思想之一就是将数据和对数据的操作封装在一起。数据的操作封装在一起。 1 1Ration
13、alRational(有理数)类有理数)类 2 2用用RationalRational对象做运算对象做运算 Rational.javaRational.java MainClass.java MainClass.java 2010-1-10204.5 对象的组合对象的组合 一个类可以把对象作为自己的成员变量,一个类可以把对象作为自己的成员变量,如果用这样的类创建对象,那么该对象中就会如果用这样的类创建对象,那么该对象中就会有其它对象,也就是说该对象将其他对象作为有其它对象,也就是说该对象将其他对象作为自己的组成部分,或者说该对象是由几个对象自己的组成部分,或者说该对象是由几个对象组合而成。组合
14、而成。例例4-74-7 2010-1-10214.6 staticstatic关键字关键字 用static 修饰的变量 类变量类变量没有用static 修饰的变量 实例变量实例变量方法声明中用static 修饰的方法类方法类方法方法声明中不用static 修饰的方法实例方法实例方法2010-1-10224.6.1 实例变量和类变量的区别实例变量和类变量的区别 如果类中有类变量,那么所有对象的这个如果类中有类变量,那么所有对象的这个类变量都分配给相同的一处内存,改变其中一类变量都分配给相同的一处内存,改变其中一个对象的这个类变量会影响其它对象的这个类个对象的这个类变量会影响其它对象的这个类变量。
15、也就是说对象共享类变量。变量。也就是说对象共享类变量。 例例4-84-8 2010-1-10234.6.2 实例方法和类方法的区别实例方法和类方法的区别 当用类创建对象后,类中的实例方法才分配当用类创建对象后,类中的实例方法才分配入口地址,从而实例方法可以被类创建的任何对入口地址,从而实例方法可以被类创建的任何对象调用执行。象调用执行。 对于类中的类方法,在该类被加载到内存时,对于类中的类方法,在该类被加载到内存时,就分配了相应的入口地址。就分配了相应的入口地址。 例例4-94-9 2010-1-10244.7 this this 关键字关键字 this是Java的一个关键字,表示某个对象。t
16、his可以出现在实例方法和构造方法中,但不可以出现在类方法中。 2010-1-10254.7.1 在构造方法中使用在构造方法中使用this thisthis关键字出现在类的构造方法中时,代关键字出现在类的构造方法中时,代表使用该构造方法所创建的对象。表使用该构造方法所创建的对象。 例例4-104-10 2010-1-10264.7.2 在实例方法中使用在实例方法中使用this 当当thisthis关键字出现实例方法中时,代表正关键字出现实例方法中时,代表正在调用该方法的当前对象。在调用该方法的当前对象。 当实例成员变量在实例方法中出现时,默认当实例成员变量在实例方法中出现时,默认的格式是:的格
17、式是:this.this.成员变量。成员变量。 当当staticstatic成员变量在实例方法中出现时,成员变量在实例方法中出现时,默认的格式是:默认的格式是:类名类名. .成员变量。成员变量。 2010-1-10274.8 包包 包是包是Java语言中有效地管理类的一个机制。语言中有效地管理类的一个机制。 包名的目的是有效的区分名字相同的类。包名的目的是有效的区分名字相同的类。 2010-1-10284.8.1 包语句包语句 通过关键字通过关键字packagepackage声明包语句。声明包语句。 packagepackage语句作为语句作为JavaJava源文件的第一条语句,源文件的第一条
18、语句,为该源文件中声明的类指定包名。为该源文件中声明的类指定包名。 package package语句的一般格式为:语句的一般格式为: package package 包名包名; ; 2010-1-10294.8.2 有包名的类的存储目录有包名的类的存储目录 程序如果使用了包语句,例如:程序如果使用了包语句,例如: package tom.jiafeipackage tom.jiafei; 那么存储文件的目录结构中必须包含有如下的结那么存储文件的目录结构中必须包含有如下的结构构 tomjiafeitomjiafei 如:如: c:1000tomjiafei c:1000tomjiafei 并且
19、要将源文件编译得到的类的字节码文件保并且要将源文件编译得到的类的字节码文件保存在目录存在目录c:1000tomjiafei中(源文件可以任意中(源文件可以任意存放)。存放)。2010-1-10304.8.3 运行有包名的主类运行有包名的主类 如果主类的包名是如果主类的包名是tom.jiafei,那么主类的字节那么主类的字节码一定存放在码一定存放在tomjiefei目录中,运行时必须到目录中,运行时必须到tomjiefei的上一层(即的上一层(即tom的父目录)目录中去的父目录)目录中去运行主类。运行主类。 假设假设tomjiefei的上一层目录是的上一层目录是1000,那么,必,那么,必须如下
20、格式来运行:须如下格式来运行: C:1000java tom.jiafei. C:1000java tom.jiafei.主类名主类名 注:主类名是:注:主类名是:“包名包名. .主类名主类名” ” 例例4-114-112010-1-10314.9 import import 语句语句 一个类可能需要另一个类声明的对象作为自一个类可能需要另一个类声明的对象作为自己的成员或方法中的局部变量,如果这两个类己的成员或方法中的局部变量,如果这两个类在同一个包中,当然没有问题。在同一个包中,当然没有问题。 如果一个类想要使用的那个类和它不在一个如果一个类想要使用的那个类和它不在一个包中,要使用包中,要使
展开阅读全文