面向对象程序设计-java语言04

上传人:第*** 文档编号:48883950 上传时间:2018-07-21 格式:PPT 页数:49 大小:291KB
返回 下载 相关 举报
面向对象程序设计-java语言04_第1页
第1页 / 共49页
面向对象程序设计-java语言04_第2页
第2页 / 共49页
面向对象程序设计-java语言04_第3页
第3页 / 共49页
面向对象程序设计-java语言04_第4页
第4页 / 共49页
面向对象程序设计-java语言04_第5页
第5页 / 共49页
点击查看更多>>
资源描述

《面向对象程序设计-java语言04》由会员分享,可在线阅读,更多相关《面向对象程序设计-java语言04(49页珍藏版)》请在金锄头文库上搜索。

1、第4章 类与对象Java语言是一个面向对象的编程语言,对象以 类的形式出现。类是组成Java程序的基本要素 ,它封装了一类对象的属性和方法。对象是用 类来实现的,因此可以将类认为是用于创建对 象的模板,所有的对象都是类的实例。 当编写Java程序时,既可以使用Java系统类库 提供的类,也可以使用Java开发人员自己编写 的类。本章主要内容4.1 类 4.2 对象 4.3 数据成员 4.4 成员方法 4.5 内部类 4.6 Java系统类库 4.1 类类的概念 对象是对事物的抽象,而类是对 对象的抽象和归纳。 在面向对象的编程语言中,类是 一个独立的程序单位,是具有相 同属性和方法的一组对象的

2、集合 。 类的定义 修饰符 class 类名 extends 父类 名 implements 类实现的接口列表 数据成员 成员方法 【例4.1】类的定义示例。 类是对象的“模板”,对象是类的实 例。 1声明对象 ,格式如下:类名 对象名表; 例如: class_name object_one, object_two;4.2 对象2建立对象。实际上就是用Java 提供的new关键字为对象分配存储 空间。格式如下: 对象名=new 构造方法();也可以在声明对象的同时建立对象 ,格式如下: 类名 对象名 = new 构造方法 ;3初始化对象 初始化对象是指由一个类生成一个 对象时,为这个对象确定初

3、始状态 ,即为它的数据成员赋初始值。初 始化对象可以采用两种方式,即由 赋值语句赋值或由构造方法赋值。 构造方法是Java提供的专用的初始 化对象的方法,该方法将在4.2.3节 介绍。 使用对象 当一个对象被创建后,我们可以通 过引用对象的成员来使用对象,引 用方式如下: 对象名.数据成员名 对象名.成员方法名(参数表) 【例4.2】对象的创建与使用示例 。 对象的初始化和构造方法 在创建对象时,通常首先要为对象 的数据成员赋初始值,这被称为对 象的初始化。如果对象的数据成员 比较多,则初始化对象就比较麻烦 ,因为每条语句只能为一个数据成 员赋值,在这种情况下,就可以定 义一个方法(构造方法)

4、来实现对 数据成员的赋值。 构造方法是一个类的方法中方法名 与类名相同的类的方法。每当使用 new关键字创建一个对象,为新建 对象开辟了内存空间之后,Java系 统将自动调用构造方法初始化这个 新建对象。构造方法是类的一种特 殊方法,它的特殊性主要体现在以 下几个方面: (1)构造方法的方法名与类名相同。 (2)构造方法是类的方法,它能够简 化初始化对象数据成员的操作。 (3)不能对构造方法指定类型,它有 隐含的返回值,该值由系统内部使用。 (4)构造方法一般不能由编程人员显 式地直接调用,在创建一个类的对象的 同时,系统会自动调用该类的构造方法 将新对象初始化。(5)构造方法可以重载,即可定

5、义多个具 有不同参数的构造方法。 (6)构造方法可以继承,即子类可以继承 父类的构造方法。 (7)如果用户在一个自定义类中未定义该 类的构造方法,系统将为这个类定义一个缺 省的空构造方法。这个空构造方法没有形式 参数,也没有任何具体语句,不能完成任何 操作。但在创建一个类的新对象时,系统要 调用该类的构造方法将新对象初始化。 【例4.3】构造方法定义示例。 4.3 数据成员数据成员也称为成员变量或变量 ,它是用来描述类中静态特征的 变量。 数据成员的声明 格式如下: 修饰符 数据成员类型 数据成员名表; (1)修饰符是可选的,它是指访问权限修 饰符public、private、protecte

6、d和非访问权限 修饰符static、final、transient和volatile等。 (2)数据成员类型就是诸如int、float等Java 允许的各种定义数据类型的关键字。 (3)数据成员名表是指一个或多个数据成 员名,即用户自定义标识符,当同时声明多 个数据成员名时,彼此间用逗号分隔。 static修饰的静态数据成员 用static修饰符修饰的数据成员不是属 于任何一个类的具体对象,而是属于类 的静态数据成员。 1静态数据成员的特点 (1)它被保存在类的内存区的公共存储 单元中,而不是保存在某个对象的内存 区中。因此,一个类的任何对象访问它 时,存取到的都是相同的数值。 (2)既可以通

7、过对象名来访问,也 可以通过类名直接访问它。 (3)static类数据成员仍属于类的作 用域,还可以使用public static、 private static等进行修饰。修饰符不 同,可访问的层次也不同。 【例4.4】静态数据成员示例。2静态数据成员的初始化 静态数据成员的初始化可以由用户 在定义时进行,也可以由静态初始 化器来完成。静态初始化器是由关 键字static引导的一对花括号括起的 语句块,其作用是在加载类时,初 始化类的静态数据成员。静态初始 化器与构造方法不同,它有下述特 点。(1)静态初始化器用于对类的静态数 据成员进行初始化。而构造方法用来对 新创建的对象进行初始化。 (

8、2)静态初始化器不是方法,没有方 法名、返回值和参数表。 (3)静态初始化器是在它所属的类加 载到内存时由系统调用执行的。而构造 方法是在系统用new运算符产生新对象 时自动执行的。【例4.5】静态初始化器示例。final修饰的最终数据成员 如果一个类的数据成员用final修饰符 修饰,则这个数据成员就被限定为最终 数据成员。最终数据成员可以在声明时 进行初始化,也可以通过构造方法赋值 ,但不能在程序的其他部分赋值,它的 值在程序的整个执行过程中是不能改变 的。所以,也可以说用final修饰符修饰 的数据成员是标识符常量。用final修饰符说明常量时,需要注 意以下几点: (1)需要说明常量的

9、数据类型并指 出常量的具体值。 (2)若一个类有多个对象,而某个 数据成员是常量,最好将此常量声 明为static,即用static final两个修饰 符修饰,这样做可节省空间。 【例4.6】final数据成员示例。 4.4 成员方法成员方法描述对象所具有的功能 或操作,反映对象的行为,是具 有某种相对独立功能的程序模块 。一个类可以定义多个方法,对 象通过执行成员方法对传来的消 息作出响应,完成特定的功能。 成员方法的分类 从成员方法的来源看,可将成员方法分 为: (1)类库成员方法。 (2)用户自己定义的成员方法。 按含参数的情况来分又可将成员方法分 为以下两种。 (1)无参成员方法。

10、(2)带参成员方法。 声明成员方法 在Java程序中,成员方法的声明只能在 类中进行,格式如下: 修饰符 返回值的类型 成员方法名(形 式参数表)throws异常表 说明部分执行语句部分 方法体中的局部变量 (1)在方法体内可以定义本方法 所使用的变量,这种变量是局部变 量,它的生存期与作用域是在本方 法内,也就是说局部变量只在本方 法内有效或可见,离开本方法这些 变量将被自动释放。 (2)方法体内定义变量时,变量 前不能加修饰符。(3)局部变量在使用前必须明确赋值 ,否则编译时会出错。 (4)在一个方法内部,可以在复合语 句中定义变量,这些变量只在复合语句 中有效,这种复合语句也被称为程序块

11、 。 【例4.7】局部变量及其用法。 【例4.8】复合语句中声明的局部变量 。成员方法的返回值 若方法有返回值,则在方法体中用 return语句指明要返回的值。其格 式为: return 表达式; 或 return(表达式);形式参数与实际参数 一般来说,可通过如下的格式来引用成员方 法: 成员方法名(实参列表) 但在引用时应注意下述问题: (1)对于无参成员方法来说,是没有实参列 表的,但方法名后的括弧不能省略。 (2)对于带参数的成员方法来说,实参的个 数、顺序以及它们的数据类型必须与形式参数 的个数、顺序以及它们的数据类型保持一致, 各个实参间用逗号分隔。实参名与形参名可以 相同也可以不

12、同。 (3)实参也可以是表达式,此时一定要注意 使表达式的数据类型与形参的数据类型相同, 或者使表达式的类型按Java类型转换规则达到 形参指明的数据类型。 (4)实参变量对形参变量的数据传递是值传 递,即只能由实参传递给形参,而不能由形参 传递给实参。程序中执行到引用成员方法时, Java把实参值拷贝到一个临时存放的存储区( 栈)中,形参的任何修改都在栈中进行,当退 出该成员方法时,Java自动清除栈中的内容。 【例4.9】成员方法引用中参数传递示例。成员方法的引用 1成员方法的引用方式 (1)方法语句 (2)方法表达式 (3)方法作为参数 (4)通过对象来引用 (5)通过类名来引用2引用成

13、员方法时应注意的事项 (1)当一个方法引用另一个方法时,这 个被引用的方法必须是已经存在的方法。 除了这个要求之外,还要视被引用的成员 方法存在于何处而做不同的处理。 (2)如果被引用的方法存在于本文件中 ,而且是本类的方法,则可直接引用。(3)如果被引用的方法存在于本文件中 ,但不是本类的方法,则要考虑类的修饰 符与方法的修饰符来决定是否能引用。 (4)被引用的方法不是本文件的方法而 是Java类库的方法,则必须在文件的开头 处用import 命令将引用有关库方法所需要 的信息写入本文件中。 (5)被引用的方法是用户在其他的文件 中自己定义的方法,则必须通过加载用户 包的方式来引用。stat

14、ic修饰的静态方法 用static修饰符修饰的方法被称为静 态方法,它是属于整个类的类方法 。不用static修饰符限定的方法,是 属于某个具体类对象的方法。static方法使用特点如下: (1)static方法是属于整个类的,它在内 存中的代码段将随着类的定义而分配和 装载;而非static的方法是属于某个对象 的方法,在这个对象创建时,在对象的 内存中拥有这个方法的专用代码段。 (2)引用这个方法时,可以使用对象名 做前缀,也可以使用类名做前缀。 (3)static方法只能访问static数据成员 ,不能访问非static数据成员,但非static 方法可以访问static数据成员。 (4

15、)static方法只能访问static方法,不 能访问非static方法,但非static方法可以 访问static方法。 (5)static方法不能被覆盖,也就是说, 这个类的子类,不能有相同名、相同参 数的方法。(6)main方法是静态方法。在Java 的每个Application程序中,都必须有 且只能有一个main方法,它是 Application程序运行的入口点。 【例4.10】static方法使用举例。 final修饰的最终方法 在面向对象的程序设计中,子类可 以利用重载机制修改从父类那里继 承来的某些数据成员及成员方法, 它对程序设计带来方便的同时,也 给系统的安全性带来威胁。为

16、此, Java语言提供了final修饰符来保证 系统的安全。 用final修饰符修饰的方法称为最终方法 ,如果类的某个方法被final修饰符所限 定,则该类的子类就不能覆盖父类的方 法,即不能再重新定义与此方法同名的 自己的方法,而仅能使用从父类继承来 的方法。可见,使用final修饰方法,就 是为了给方法“上锁”,防止任何继承类 修改此方法,保证了程序的安全性和正 确性。 注意:final修饰符也可用于修饰类 ,而当用final修饰符修饰类时,所 有包含在final类中的方法,都自动 成为final方法。 【例4.11】final修饰的方法应用举 例。 native修饰的本地方法 修饰符native修饰的方法称为本地 方法,此方法使用的目的是为了将 其他语言(例如,C、C+、 FORTRAN、汇编等)嵌入到Java 语言中。这样可以充分利用已经存 在的其他语言的程序功能模块,避 免重复编程。4.5 内 部 类在一个类的内部嵌套定义

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号