第4章 面向对象(下)
第四章Java面向对象特性课件

对象的基本概念
面向对象程序语言三个关键特点: 封装 ( Encapsulation ) 多态 ( Polymorphism ) 继承 ( Inheritance )
1
第4章 Java面向对象特性
抽象数据类型
基本数据类型和聚集类型的变量与一些操作 (如+, -)之间不需特殊的联系。 在面向对象语言中,在数据类型的声明与操作
数据隐藏与封装举例
class Date{
private int day, month, year;
void setDate( int a, int b, int c){
day = a;
month = b;
year = c ;
}
}
…
Date d1;
d1=new Date( ); d1.setDate(30,9,2001);
4
第4章 Java面向对象特性
对象生命周期
创建对象 使用对象 清除不用的对象
5
第4章 Java面向对象特性
创建对象
创建对象的三个步骤: 声明 (Declaration ) 实例化(Instantiation) 初始化(Initialization)
例: Point origin_one ; origin_one = new Point(23, 94); Rectangle rect_one = new Rectangle(origin_one, 100, 200); Rectangle rect_two = new Rectangle(50, 100);
public void changeObjValue( PassTest ref){
ref.ptValue = 99.0f; }
java程序设计 第四章 内容提纲汇总

注意:①创建对象的意思是在内存中按类的格式开辟
一个空间。这个空间既有属性空间,又有方法空间。 ②同类的不同对象占用不同的内存空间 创建变量与创建对象示意图
第4章 面向对象编程
2、对象初始化的说明 (1)系统如何对变量初始化 一个变量若在声明后没有赋值而直接使用该变量, 则会出错
同样,用new创建一个对象时,系统会为对象中 的变量进行初始化。系统不但会为对象中的变量分配 内存,同时还为它们设置相应的初值 byte、short、int、long类型变量设初值为0 Float类型变量设初值为0.0f Double类型变量设初值为0.0 Char类型变量设初值为‘\u0000’ Boolean为false; 引用类型初值为null
第4章 面向对象编程
B、修饰方法—公共方法: 公共方法是类的对外接口,它允许其它类或程序 调用 C、修饰域—公共域(公共属性、公共变量):
用public修饰变量,会造成安全性和数据的封装
性下降
第4章 面向对象编程
2)、私有访问控制符:private 用private修饰的属性和方法只能被自身类访问 和修改。它不能被其它类(包括该类的子类)访问和修 改 说明: ①享有最高级别的保护,是类的私有成员 ②其它类若想获得和修改私有成员时,要通过 类的方法
◆封装是抽象的具体体现,它利用操作方法把数据 封装到类中;形成以数据为核心,以方法为外壳的类。
◆继承是一个类继承父类的所有非私有的属性和方 法,它可以提高代码的重用性。 ◆对象是类的实例化的结果,是类的具体化,利用 对象的引用可以使用类的属性和方法完成任务。
第4章 面向对象编程
§4.3 成员变量与封装
态,解决问题)
第4章 面向对象编程
面向对象的方法解决问题的基本过程 对象 实 例 ③ 化 类 实体
面向对象程序设计第四章

4.1 抽象与封装
封装就是将数据的表现方式和对数据的操作细节隐藏 起来,用户可以通过接口对数据进行操作,而不必要 知道数据是如何表示的,怎么对数据操作的这些细节 封装是面向对象的基本特征之一 变速箱变速、汽车驱动、汽车转向等原理都被封装在 汽车内部了,提供给驾驶员的只是一个接口。驾驶员 只需要踩下油门、转动方向盘就可以上路了 我们不必要知道录音机、MP3播放器、电视机遥控器 等内部细节,只需要知道按下哪个键可以播放、停止 即可
类成员包括成员函数和数据成员两类。 包含可执行代码的成员统称为该类的成员函数。 类的成员函数包括:方法、属性、事件、索引 器、运算符和构造函数。 类的数据成员包含类要处理的数据,可以是常 量和字段。
4.3 对象
4.3.1 创建对象 使用new运算符,可以创建对象,即类的实例。对象 是一个引用类型的变量。 对象的创建形式: 类名 对象名 = new 类名(参数); Goods cloth = new Goods(10); 使用new运算符创建对象,并调用类的构造函数完成 对象的初始化工作。也可以分两步创建对象: Goods cloth ; cloth = new Goods(10);
protected
internal protected internal
定义保护成员。成员可以从定义它的类内部,以及派 生类访问
定义内部成员。成员只能从当前程序集中访问 定义内部保护成员。成员在当前程序集、定义它的类 内部和派生类访问
4.7.1 使用传统的读写方法进行封装
在程序中,可以使用传统的读写方法封装私有 数据。通常先定义私有字段,然后定义一个读 私有字段的方法和一个修改字段的方法。如果 想访问类中封装的私有数据,只能通过读写方 法完成,这样可以保证类中封装数据的完整性
第四章 面向对象(下)

Java基础及应用开发
王亚平
总目录
第一章
第二章
第三章
第四章
第五章 第六章 第七章
Java入门 Java编程基础 面向对象(上) 面向对象(下) 多线程 图形用户界面GUI Java编程进阶
本章目标
类的继承 final关键字 抽象类 接口(interface) 对象的类型转换 面向对象的多态性 异常 包(package)
4.9 包
package语句及应用 package语句作为Java源文件的第一条语句。如果没有 package语句,则为缺省无名包。 import语句及应用 jdk中常用的包
– ng----包含一些Java语言的核心类,如String、Math、Integer、 System和Thread,提供常用功能。 – java.awt----包含了构成抽象窗口工具集(abstract window toolkits) 的多个类,这些类被用来构建和管理应用程序的图形用户界面(GUI)。 – java.applet----包含applet运行所需的一些类。 – ----包含执行与网络相关的操作的类。 – java.io----包含能提供多种输入/输出功能的类。 – java.util----包含一些实用工具类,如定义系统特性、使用与日期日历 相关的函数。
4.8 异常 Nhomakorabea异常定义了程序中遇到的非致命的错误, 而不是编译时的语 法错误,如程序要打开一个不存的文件、网络连接中断、 操作数越界、装载一个不存在的类等。 try,catch语句 throws关键字 自定义异常与throw关键字 如何对多个异常作出处理 也可以在一个方法中使用throw,try…catch语句来实现程 序的跳转 一个方法被覆盖时,覆盖它的方法必须扔出相同的异常或 异常的子类。 如果父类扔出多个异常,那么重写(覆盖)方法必须扔出 那些异常的一个子集,也就是说不能扔出新的异常。
《Java基础入门》课后题答案

《Java基础入门》习题答案第1章Java开发入门一、填空题1、Java EE、Java SE、Java ME2、JRE3、javac4、bin5、path、classp ath二、选择题1、ABCD2、C3、D4、B5、B三、简答题1、面向对象、跨平台性、健壮性、安全性、可移植性、多线程性、动态性等。
2、JRE(Java Runtim e Enviro nment,Java运行时环境),它相当于操作系统部分,提供了Jav a程序运行时所需要的基本条件和许多Jav a基础类,例如,IO类、GUI控件类、网络类等。
JRE是提供给普通用户使用的,如果你只想运行别人开发好的Jav a程序,那么,你的计算机上必须且只需安装JRE。
JDK(Java Develo pment Kit,Java开发工具包),它包含编译工具、解释工具、文档制作工具、打包工具多种与开发相关的工具,是提供给Ja va开发人员使用的。
初学者学习和使用Jav a语言时,首先必须下载和安装JD K。
JDK中已经包含了JR E部分,初学者安装J DK后不必再去下载和安装JRE了。
四、编程题public classHelloW orld{public static void main(String[] args) {System.out.println("这是第一个J ava程序!");}}第2章Java编程基础一、填空题1、class2、true和false3、单行注释、多行注释、文档注释4、基本数据类型、引用数据类型5、1、2、4、86、& && | ||7、08、59、3410、56二、判断题1、错2、对3、错4、对5、错三、选择题1、AD2、AD3、C4、ABCD5、C 6 、A 7、AC 8、A 9、B 10、A四、程序分析题1、编译不通过。
java基础编程 第四章 面向对象(下) 案例

案例4-1 super访问父类成员变量一、案例描述1、考核知识点编号:029004003名称:super关键字2、练习目标➢掌握使用super关键字访问父类成员变量的方法3、需求分析子类可以继承父类的非私有成员变量,如果在子类中修改了继承自父类的成员变量的值,再想要访问父类的该成员变量时,可以通过super.成员变量来实现。
为了让初学者熟悉super关键字的用法,本案例将分别设计Fu类及其子类Zi,并在Zi类的方法中使用super关键字访问Fu类的成员变量。
4、设计思路(实现原理)1)编写一个Fu类,在类中定义无参构造和一个初始值为20的num成员变量。
2)Zi类继承Fu类,在子类中对num值进行了修改,同时在子类中定义无参构造和一个无返回值的method()方法,method()方法中使用super关键字调用了Fu类的num成员变量。
3)定义测试类Example03。
二、案例实现1、编写Fu类及其子类Zi,在Zi类中使用super关键字调用Fu类成员变量,代码如下class Fu {Fu() {}int num = 20;}class Zi extends Fu {Zi() {}int num = 30;// 修改num的值void method() {System.out.println("method");// super关键字调用父类成员变量System.out.println("Fu类中num值为:" + super.num);System.out.println("Zi类中num值为:" + num);}}2、定义测试类Example03,代码如下:class Example03{public static void main(String[] args) {Zi z = new Zi();z.method();}}运行结果如图4-3所示。
第4章__面向对象需求分析

• 在确定事件轨迹后,所有事件可以汇总成输入对象的事件 集和从对象输出的事件集。事件流图就是用于标记所有流入和 流出某对象的事件。
•
例:打印机对象—行为模型示例。
• 状态转换图表示了打印机的状态转换。图中的每个箭头代 表了从对象的一个状态到另一个状态的转变,箭头上标记的是 触发转变的事件。有时需要增加保护条件来满足对象的变迁, 例如,上图中打印机在故障状态时,故障修复事件只有在打印 队列不破坏的情况下才能使打印机进入打印状态,否则即使修 复也只能进入就绪状态。
工人
1..*
经理 管理
(1)关联
•限定关联 • 限定关联通常用在一对多或多对多的关联关系中,可以把 模型中的重数从一对多变成一对一,或从多对多简化成多对一。 在类图中把限定词放在关联关系末端的一个小方框内。 • 例如,某操作系统中一个目录下有许多文件,一个文件仅 属于一个目录,在一个目录内文件名确定了惟一一个文件。利 用限定词“文件名”表示了目录与文件之间的关系,可见,利 用限定词把一对多关系简化成了一对一关系。
(1)关联
•关联类 • 为了说明关联的性质可能需要一些附加信息。可以引入 一个关联类来记录这些信息。关联类也有属性、操作和其他 关联。
个人
0..*
授权
0..*
个人
授权 优先权 特权
用户和工作站的授权关联的关联类
3.对象-关系图
• (2)聚集
• 聚集也称为聚合,是关联的特例。聚集表示一类对象与 另一类对象之间的关系,是整体与部分的关系。
• 一.面向对象分析模型的组成结构 • 二.面向对象分析模型描述工具 • 三.面向对象分析的基本过程
• 四. 面向对象分析方法
• 五. 小结
一.面向对象分析模型的组成结构
第4章 面向对象系统分析与对象类建模 2

⑶ 类的操作
其语法如下: [方向]名称:类型[ = 默认值] [direction] name:type [= default value] 方向可以取下述值之一: in输入参数,不能对它进行修改。 out输出参数,为了向调用者传送信息可以对它进 行修改。 inout输入参数,为了向调用者传送信息可以对它 进行修改。
第4章 面向对象系统分 析与对象类建模
教学目的
⑴ 掌握面向对象系统分析的过程 ⑵ 掌握系统用例模型的设计方法
⑶ 了解类和对象的概念、类与对象的关系等
⑷ 重点掌握系统用例模型的设计和对象与类图 的设计
4.1 面向对象系统分析
面向对象分析,就是抽取和整理用户需求并 建立问题域精确模型的过程。 面向对象分析过程从分析陈述用户需求的文 件开始 可能由用户(包括出资开发该软件的业主代 表及最终用户)单方面写出需求陈述,也可 能由系统分析员配合用户,共同写出需求陈 述 当软件项目采用招标方式确定开发单位时,
关联可以有方向,即导航。 一般不作说明的时候,导航是双向的,不需要在线上标出箭头。 大部分情况下导航是单向的,可以加一个箭头表示。 导航性描述的是一个对象通过链(关联的实例)进行导航访问另 一个对象,即对一个关联端点设置导航属性意味着本端的对象可 以被另一端的对象访问。 可以在关联关系上加箭头表示导航方向。 只在一个方向上可以导航的关联称为单向关联,用一条带箭头的 实线来表示。 在两个方向上都可以导航的关联称为双向关联,用一条没有箭头 的实线来表示。
关联的多重性是指有多少对象可以参与该关联,多重性可 以用来表达一个取值范围、特定值、无限定的范围或一组 离散值。 将多重性写成一个表示取值范围的表达式,其最大值和最 小值可以相同,用两个圆点把它们分开。 多重性说明对于关联另一端的类的每个对象,本端的类可 能有多少个对象出现,对象的数目必须是在给定的范围内。 可以精确地表示多重性为:一个(1);多个(0..*);一 个或多个(1..*);整数范围,
第4章 面向对象系统分析

33
4.1 面向对象的基本概念
单一继承和多重继承
34
4.1 面向对象的基本概念
多态(Polymorphism)
在父类中定义的属性或服务被子类继承后,可 以具有不同的数据类型或表现出不同的行为。
35
4.1 面向对象的基本概念
多态性表明同一个操作用于不同的对象上可以有不同
的解释,并产生不同的执行结果。
在面向对象开发模式中,把标识和模型化问题论域中
的主要实体做为系统开发的起点,主要考虑对象的行 为而不是必须执行的一系列动作;
• • • • • 对象是数据抽象与过程抽象的综合; 系统的状态保存在各个数据抽象的所定义的数据存储中; 控制流包含在各个数据抽象中的操作内; 消息从一个对象传送到另一个对象; 算法被分布到各种实体中。
39
4.1 面向对象的基本概念Fra bibliotek 组成结构实例
40
4.1 面向对象的基本概念
实例连接--关联关系
实例连接 实例连接表示对象之间的静态联系,它是通过对 象的属性来表现对象之间的依赖关系。 对象之间的实例连接称为链接(Link),存在实例连接 的对象类之间的联系称为关联(Association)。 „ has a „ 关联是一种结构关系,它描述了一组对象之间的连接, 关联具有多重性。
比较一下,实体关系图(ERD)中的关系和类图中的关联
实体关系图(关系型数据库) 类图(面向对象) 表(table) 类(class) 记录(record) 字段(field) 对象(object) 属性(attribute)
-关系(relationship)
操作(operation) 关联(association)
23
第4章面向对象方法学与UML

第4章面向对象方法学与UML面向对象方法学(Object-Oriented Methodology,OOM)是一种软件开发方法,它将系统建模和设计过程中的对象概念引入到软件开发中。
在面向对象方法学中,系统被看作是一组对象的集合,这些对象通过消息传递进行通信和交互。
而UML(Unified Modeling Language)是一种用于软件系统描述的建模语言,也是面向对象方法学的一部分。
面向对象方法学中的核心概念是对象。
对象是系统中的一个实体,它可以具有属性(属性描述对象的状态)和方法(方法描述对象的行为)。
通过将系统建模为一组对象的集合,面向对象方法学提供了一种基于对象的分析和设计框架,帮助开发人员将系统需求转化为可执行的软件。
面向对象方法学使用UML作为建模语言,通过使用UML图表来可视化和描述系统的不同方面。
UML图表包括类图、用例图、序列图、活动图等。
类图是UML中最常用的图表类型之一,用于描述系统中的类、属性和方法之间的关系。
类图中的类代表系统中的对象,属性代表类的状态,方法代表类的行为。
类图可以帮助开发人员理解系统的对象结构,设计类之间的关系。
用例图是UML中的另一个重要图表类型,用于描述系统与外部用户或系统之间的功能需求。
用例图用于表示系统的功能需求,并显示不同用户或系统与系统之间的交互。
序列图用于描述系统中对象之间的交互和通信。
它显示了对象之间的消息传递顺序,帮助开发人员理解系统中不同对象之间的交互过程。
活动图用于描述系统中的业务流程或工作流程。
它展示了系统中的活动和操作之间的顺序和关系,帮助开发人员理解系统中不同活动和操作之间的流程。
通过使用面向对象方法学和UML,开发人员可以更好地理解和描述系统的需求和结构。
这有助于提高软件开发的效率和质量,并且提高系统的可维护性和可扩展性。
因此,面向对象方法学和UML已成为现代软件开发中不可或缺的重要工具和技术。
Java面向对象第四章

第四章接口
1、接口表示一种能力和约定
2、接口只有静态常量和抽象方法
3、接口使用interface关键字修饰
4、接口有抽象类的更好的特性:
a)可以被多继承
b)设计和实现完全分离
c)更自然的使用多态
d)更容易搭建程序框架
e)更容易更换实现
5、必须知道接口特性
a)接口不可以被实例化,常作为父类类型使用,需要创建子类对象
b)实现类必须实现接口的所有方法,除非实现一个抽象类
c)实现类可以实现多个接口,解决了Java继单承的问题,使用implements实现
d)接口中的变量都是静态常量
e)接口中的方法都是抽象方法
6、什么是接口类型:
a)接口属于一种引用类型,使用interface关键字修饰
7、使用Java实现接口的步骤:
a)设计接口:说明接口有哪些能力和接口有哪些约定
b)实现所有方法:用一个类实现接口,并且实现所有方法
c)使用接口类型,类对象来实现多态
8、接口的默认形式:
a)常量默认:public static final
b)方法默认:public abstract
9、接口的两大作用:
a)接口表示一种约定:体现在接口名称和方法名称和注释上,在面向接口,
我们并不考虑实现的细节,只需要知道想完成哪些功能,每一个功能就
是一个抽象方法,所有实现接口的类,都拥有该接口的方法
b)接口表示一种能力
10、面向接口设计注意事项:
a)关心实现类有何能力,而不关心实现细节
b)面向接口的约定而不考虑接口的具体实现
11、多个类关系图的表示:实线箭头表示继承,空心箭头表示实现。
第章面向对象分析与设计类图和对象图

学校工作总结本学期,我校工作在全体师生的大力支持下,按照学校工作计划及行事历工作安排,紧紧围绕提高教育教学质量的工作思路,不断强化学校内部管理,着力推进教师队伍建设,进一步提高学校办学水平,提升学校办学品位,取得了显著的成绩。
现将我校一学期来的工作总结如下:一、德育工作本学期我校德育工作围绕学校工作中心,精心安排了“文明守纪”、“良好习惯养成”、“光辉的旗帜”、“争先创优”等主题教育月活动,从培养学生的行为规范,狠抓养成教育入手,注重务实,探索途径,加强针对性、实效性和全面性,真正把德育工作落到实处。
1.强化学生养成教育,培养学生良好习惯。
本学期,我校德育工作十分注重学生的常规管理,尤其重视对学生的养成教育。
一是利用班队会、红领巾广播站、国旗下演讲对学生进行品德熏陶。
二是以文明监督岗为阵地,继续强化了“文明班集体”的创建评比活动,通过卫生、纪律、两操等各项常规的评比,增强了学生的竞争意识,同时也规范了学生的行为。
三是继续加大值周检查的力度,要求值周领导、教师、学生按时到岗,在校门口检查、督促学生有秩序出入校园,从而使学生的行为规范时时有人抓,处处有人管,形成了良好的局面。
2.抓好班主任队伍建设,营造全员育人氛围。
班主任是学校德育工作最重要的力量,为了抓好班主任队伍建设,提高班主任素质水平,学校在第十二周组织开展了班主任工作讲座,在学期末举行了班主任工作交流,在活动中探索行之有效的工作方法,总结经验,交流心得,使班级管理工作更上新台阶。
3.充分发挥主题班队会的教育功能。
主题班队会,是对学生进行德育教育的一种特殊而卓见成效的方式之一。
为了充分发挥主题班队会的教育意义,第十三周,四(3)中队举行了“祖国美,家乡好”主题队会观摩活动,有效规范了我校主题中队会程序,强化了主题队会对学生的思想教育作用。
二、学校管理工作1.建立健全规章制度。
学期初,学校制定了出明确的目标计划及管理措施,做到了目标明确、工作具体,有效地增强了全体教师参与学校管理的主人翁意识,充分调动了全体教师的工作积极性,保障了教育教学工作的顺利开展。
面向对象分析与设计(第二版)习题答案

面向对象分析与设计(第二版)习题答案第一章:面向对象基础知识1.1 什么是面向对象分析和设计?面向对象分析和设计(Object-Oriented Analysis and Design,OOAD)是软件工程中一种常用的方法论,通过将问题领域进行建模,通过对象、类、继承、封装等概念来描述现实世界中的实体、关系和行为。
面向对象分析和设计的目标是开发出可复用、可维护、可扩展、高质量的软件系统。
1.2 面向对象分析和设计的优势有哪些?面向对象分析和设计有以下优势: - 高度模块化:通过将系统划分为多个独立的对象,便于理解和设计系统的各个部分。
- 可复用性:面向对象设计强调对象的复用,通过定义通用的类和接口,可以提高代码的复用程度。
- 可维护性:面向对象的封装特性使得系统的各个部分具有独立性,便于维护和修改。
- 可扩展性:通过继承和多态等特性,可以方便地扩展和修改系统的功能。
- 高可靠性:面向对象的封装和隐藏特性可以减少系统中的错误和安全漏洞。
- 开发效率高:面向对象的分析和设计提供了一种更自然的思考和描述问题的方法,可以提高开发效率。
第二章:面向对象建模2.1 对象的特征有哪些?对象具有以下特征: - 状态(State):对象的状态是对象的属性值的集合,表示对象的某个时刻的状态。
- 行为(Behavior):对象可以执行的操作,描述了对象能够做什么。
- 身份(Identity):每个对象都有唯一的身份,可以通过身份来区分不同的对象。
2.2 类和对象之间的关系有哪些?类和对象之间有以下关系: - 实例化(Instantiation):类是对象的模板,对象是类的一个具体实例。
- 继承(Inheritance):一个类可以继承另一个类的属性和方法。
- 聚合(Aggregation):一个类可以包含其他类的对象作为成员变量。
- 关联(Association):两个类之间存在某种关系,一个类的对象可以访问另一个类的对象。
第四章面向对象方法

第四章面向对象方法【学习目标】本章集中介绍了面向对象方法的基本原理和概念,同时简述了统一建模语言(Unified Modeling Languange,UML)的主要作用和基本概念,并结合一个实例,论述了基于UML 语言的面向对象分析方法,从而使学生掌握面向对象方法的基本理论,学会使用UML语言进行面向对象的分析和建模。
【学习方法】正确理解面向对象方法和UML语言涉及的基本概念,结合具体实例运用面向对象分析技术,从而达到学习目的。
【难重点】本章的学习重点在于理解面向对象方法的原理和概念,熟练运用UML语言,掌握面向对象的分析方法,其难点是怎样在实际的软件项目中灵活运用这些思想和方法。
【课前思考】面向对象开发方法有什么优点?面向对象方法包含哪些基本概念?为什么要对软件系统建模?什么是UML?面向对象分析与面向对象设计的区别是什么?什么是软件复用?4.1 面向对象方法概述【本节知识点】什么是面向对象面向对象技术的发展历史面向对象的基本概念面向对象的软件工程方法4.1.1 什么是面向对象面向对象(Object Oriented)技术是软件工程领域中的重要技术,这种软件开发思想比较自然地模拟了人类认识客观世界的方式,成为当前计算机软件工程学中的主流方法。
应该特别强调的是,面向对象技术不仅仅是一种程序设计方法,更重要的是一种对真实世界的抽象思维方式。
面向对象方法的基本思想是从现实世界中客观存在的事物(即对象)出发,尽可能地运用人类的自然思维方式来构造软件系统。
它更加强调运用人类在日常的逻辑思维中经常采用的思想方法与原则,例如抽象、分类、继承、聚合、封装等,使开发者以现实世界中的事物为中心来思考和认识问题,并以人们易于理解的方式表达出来。
面向对象技术的基本观点如下:(1)客观世界是由对象组成的,任何客观的事物或实体都是对象,复杂的对象可以由简单的对象组成。
(2)具有相同数据和相同操作的对象可以归并为一个类,对象是对象类的一个实例。
《Java基础入门》_课后习题答案

3、打印结果为:3。
4、打印结果为:
9
8
7
五、简答题
1、Java语言的八种基本数据类型有:byte字节型,占一个字节。short短整型,占两个字节。int整型,占4个字节。long长整型,占8个字节。float单精度浮点型,占4个字节。double双精度浮点型,占8个字节。char字符型,占两个字节。boolean型,表示逻辑值,有true和false两个值,分别占一个字节。
2、多态意味着一个对象有着多种形态,可以在特定的情况下,表现不同的状态,从而对应着不同的属性和方法。简单的说,多态就是使用父类类型的变量引用子类对象,根据被引用子类对象的特性,程序会得到不同的运行效果。
3、在Java中,使用abstract关键字修饰的类称之为抽象类。抽象类是不能被实例化的,通常需要写一个子类来继承抽象类,同时实例化子类来获得该类的对象。抽象类通常用于表示一种抽象的概念。
2、单例模式可以保证在整个程序运行期间针对该类只存在一个实例对象。
六、编程题
1、参考答案
class Student {
private String name;
private double grade;
public Student() {
}
public Student(String name, double grade) {
public void introFather() {
System.out.println("My Father's name is " + name);
自考Java程序语言设计(一)第四章面向对象程序设计讲义

第四章面向对象程序设计目录第一节类和对象第二节定义方法第三节静态成员第四节包装类01 类和对象类的定义类的定义也称为类的声明。
类中含有两部分元素,分别是数据成员变量和成员方法。
类定义的一般格式如下。
修饰符 class 类名 [extends父类名]{修饰符类型成员变量1;修饰符类型成员变量2;……修饰符类型成员方法 1 (参数列表){方法体}……}其中,class是关键字,表明其后定义的是一个类。
含有class的这一行称为类头,后面大括号括住的部分称为类体。
class前的修饰符可以有多个,用来限定所定义的类的使用方式。
类名是用户为该类所起的名字,它必须是一个合法的标识符,并尽量遵从命名约定。
extends是关键字。
如果所定义的类是从某一个父类派生而来,那么,父类的名字要写在extends之后。
类定义中的数据成员变量可以有多个。
成员变量前面的类型是该变量的类型;类中的成员方法也可以有多个,其前面的类型是方法返回值的类型。
如果没有返回值,则写void。
方法体是要执行的真正语句。
在方法体中还可以定义该方法内使用的局部变量,这些变量只在该方法内有效。
方法的参数列表中可以含有0 个或多个参数,每个参数的前面要指明该参数的类型。
类定义中的修饰符是访问权限修饰符,包括 public、private和protected,也可以不写,表示是默认修饰符。
它们既可以用来修饰类,又可以修饰类中的成员,修饰符决定所修饰成员在程序运行时被访问的方式。
具体来说,用public修饰的成员表示是公有的,也就是它可以被其他任何对象访问。
类中限定为private的成员只能被这个类本身访问,在类外不可见。
用 protected修饰的成员是受保护的,只可以被同一包及其子类的实例对象访问。
如果不写任何修饰符,则表明是默认的,相应的成员可以被所在包中的各类访问。
类的示例使用类可以构造所需的各种类型。
例如,程序中要说明日期这个类型,它含有3个成员变量:日、月、年,分别用3个整数来表示。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
接下来通过一个案例来认识一下什么是异常。
4.5 异常(Exception)
➢ 接下来通过一张图来展示Throwable类的继承体系,如下图所示。
➢ 通过图中可以看出,Throwable有两个直接子类Error和Exception,其中Error 代表程序中产生的错误,Exception代表程序中产生的异常。
4.在Java中,子类和父类是一种相对概念,也就是说一个类是某个类父类的同时,也可以 是另一个类的子类。例如上面的示例中,B类是A类的子类,同时又是C类的父类。
4.1 类的继承
重写父类方法
➢ 在继承关系中,子类会自动继承父类中定义的方法,但有时在子类中需要 对继承的方法进行一些修改,即对父类的方法进行重写。需要注意的是, 在子类中重写的方法需要和父类被重写的方法具有相同的方法名、参数列 表以及返回值类型。
之间要用逗号隔开。具体示例如下:
4.3 抽象类和接口
• 一个接口可以通过extends关键字继承多个接口,接口之间用逗号隔开。具体示例 如下:
• 一个类在继承另一个类的同时还可以实现接口,此时,extends关键字必须位于 implements关键字之前。具体示例如下:
【任务4-1】USB接口程序设计
任务案例
案例代码
接下来,通过一个USB接口程序设 计来熟悉本阶段的知识点。
4.4 多态
多态概念
➢ 在设计一个方法时,通常希望该方法具备一定的通用性。例如要实现一个动物 叫的方法,由于每种动物的叫声是不同的,因此可以在方法中接收一个动物类 型的参数,当传入猫类对象时就发出猫类的叫声,传入犬类对象时就发出犬类 的叫声。在同一个方法中,这种由于参数类型不同而导致执行效果各异的现象 就是多态。继承是多态得以实现的基础。
什么是异常 try…catch和finally throws关键字 运行时异常与编译时异常 自定义异常
4.1 类的继承
继承的概念
➢ 在现实生活中,继承一般指的是子女继承父辈的财产。在程序中, 继承描述的是事物之间的所属关系,通过继承可以使多种事物之 间形成一种关系体系。例如猫和狗都属于动物,程序中便可以描 述为猫和狗继承自动物,同理,波斯猫和巴厘猫继承自猫,而沙 皮狗和斑点狗继承自狗。这些动物之间会形成一个继承体系,具 体如下图所示。
案例代码
下面通过一个例子来演示Object类中toString()方法的使用。
4.4 多态
➢ 在Object类中定义了toString()方法,在该方法中输出了对象的基本信息, Object类的toString()方法中的代码具体如下:
➢ 为了方便初学者理解上面的代码,接下来分别对其中用到的方法进行解释,具 体如下:
➢ 案例中,Dog类从Animal类继承了shout()方法,该方法在被调用时会打印 “动物发出叫声”,这明显不能描述一种具体动物的叫声,Dog类对象表 示犬类,发出的叫声应该是“汪汪汪”。
案例代码
为了解决这个问题,可以在Dog类中重写父类Animal中的shout()方 法。
4.1 类的继承
super关键字
4.3 抽象类和接口
➢ 在上面的语法中,一个接口可以有多个父接口,他们之间用逗号隔开。Java使 用接口的目的是为了克服单继承的限制,因为一个类只能有一个父类,而一个 类可以实现多个接口。接口中的变量默认使用“public static final”来修饰, 即全局常量;接口中定义的方法默认使用“public abstract”来修饰,即抽象 方法。如果接口声明为public,则接口中的变量和方法全部为public。
4.1 类的继承
➢ 在类的继承中,需要注意一些问题,具体如下:
1.在Java中,类只支持单继承,不允许多重继承,也就是说一个类只 能有一个直接父类,例如下面这种情况是不合法的。
2.多个类可以继承一个父类,例如下面这种情况是允许的。
3.在Java中,多层继承是可以的,即一个类的父类可以再去继承另外的父类,例如C类继承 自B类,而B类又可以去继承A类,这时,C类也可称作A类的子类。例如下面这种情况是允许 的。
➢ 在Java中为了实现多态,允许使用一个父类类型的变量来引用一个子类类型的 对象,根据被引用子类对象特征的不同,得到不同的运行结果。
案例代码
接下来通过一个案例来演示多态的使用。
4.4 多态
多态的类型转换
➢ 在多态的学习中,涉及到将子类对象当作父类类型使用的情况,此种情况在 Java的语言环境中称之为“向上转型”,例如下面两行代码:
案例代码
接下来通过一个案例来验证此特性。
4.2 final关键字
final关键字修饰变量
➢ Java中被final修饰的变量称为常量,它只能被赋值一次,也就是说 final修饰的变量一旦被赋值,其值不能改变。如果再次对该变量进行 赋值,则程序会在编译时报错。
案例代码
接下来通过一个案例来演示这种错误和final修饰成员变量的情况。
4.2 final关键字
final关键字修饰类
➢ Java中的类被final关键字修饰后,该类将不可以被继承,也就是不能 够派生子类。
案例代码
接下来通过一个案例来验证此特性。
4.2 final关键字
final关键字修饰方法
➢ 当一个类的方法被final关键字修饰后,这个类的子类将不能重写该方 法。
➢ 将子类对象当作父类使用时不需要任何显式地声明,需要注意的是,此时不能 通过父类变量去调用子类中的特有方法。
案例代码
接下来通过一个案例来演示对象的类型转换和强制类型转换就会运行 出错的情况。
4.4 多态
Object类
➢ 在JDK中提供了一个Object类,它是类层次结构的根类,每个类都直接或间接 继承自该类,所有对象(包括数组)都实现了这个类的方法。Object类中的常 用方法如下表所示。
4.3 抽象类和接口
➢ 为了加深初学者对接口的认识,接下来对接口的特点进行归纳,具体如下:
• 接口中的方法都是抽象的,不能实例化对象。 • 接口中的属性只能是常量。 • 当一个类实现接口时,如果这个类是抽象类,则实现接口中的部分方法即可,否则
需要实现接口中的所有方法。 • 一个类通过implements关键字实现接口时,可以实现多个接口,被实现的多个接口
4.5 异常(Exception)
➢ 接下来就对这两个直接子类进行详细的讲解。
案例代码
接下来通过一个案例来学习如何实现抽象类中的方法。
4.3 抽象类和接口
接口
➢ 如果一个抽象类中的所有方法都是抽象的,则可以将这个类用另外一种方式来 定义,即接口。接口是由常量和抽象方法组成的特殊类,是对抽象类的进一步 抽象。
➢ 在定义接口时,需要使用interface关键字来声明,其语法格式如下:
➢ 由于接口中的方法都是抽象方法,因此不能通过实例化对象的方式来调用接口 中的方法。此时需要定义一个类,并使用implements关键字实现接口中所有的 方法。一个类可以在继承的同时实现多个接口,在implements子句中用逗号隔 开。接口的实现类声明格式如下:
案例代码
接下来通过一个案例来学习接口的使用。
• getClass().getName()代表返回对象所属类的类名,即Animal。 • hashCode()代表返回该对象的哈希值。 • Integer.toHexString(hashCode())代表将对象的哈希值用16进制表示。
➢ 其中,hashCode()是Object类中定义的一个方法,这个方法将对象的内存地址 进行哈希运算,返回一个int类型的哈希值。
案例代码
接下来将4.4.1小节中文件4-19 Example13.java改为内部类的方式进 行实现。
【任务4-2】模拟物流快递系统程序设计
任务案例
案例代码
接下来,通过一个模拟物流快递系 统程序设计来熟悉本阶段的知识点 。
4.5 异常(Exception)
什么是异常
➢ 尽管人人希望自己身体健康,处理的事情都能顺利进行,但在实际生活中总会 遇到各种状况,比如感冒发烧,工作时电脑蓝屏、死机等。同样,在程序运行 的过程中,也会发生各种非正常状况,比如程序运行时磁盘空间不足、网络连 接中断、被装载的类不存在等。针对这种情况,在Java语言中,引入了异常, 以异常类的形式对这些非正常情况进行封装,通过异常处理机制对程序运行时 发生的各种问题进行处理。
4.1 类的继承
➢在Java中,类的继承是指在一个现有类的基础上去构 建一个新的类,构建出来的新类被称作子类,现有类被 称作父类,子类会自动拥有父类所有可继承的属性和方 法。在程序中,如果想声明一个类继承另一个类,需要 使用extends关键字。
案例代码
接下来通过一个案例来学习子类是如何继承父类的
案例代码
toString()方法返回的不仅仅是基本信息,而是一些特有的信息,这 时重写Object的toString()方法便可以实现。
4.4 多态
匿名内部类
➢ 在编写Java程序时,在类里面定义的类称之为内部类(Inner Class),内部类 是外部类的一个成员。Java内部类可以分为:成员内部类、方法内部类和匿名 内部类等。
第四章 面向对象(下)
• 类的继承 • 多态 • 异常
• final关键字 • 接口
学习目标
掌握类的继承、方法重写、super关键字
1
的使用、final关键字、抽象类和接
口、多态的使用以及异常的处理方式
掌握
了解什么是异常
3
熟悉面向对象继承
和多态的概念 2
目录
类的继承
☞点击查看本小节知识架构
final关键字
➢ 在前面多态的讲解中,如果方法的参数被定义为一个接口类型,那么就需要定 义一个类来实现接口,并根据该类进行对象实例化。除此之外,还可以使用匿 名内部类来实现接口。所谓匿名内部类就是没有名字的内部类,表面上看起来 它似乎有名字,实际那不是它的名字。当程序中使用匿名内部类时,在定义匿 名内部类的地方往往直接创建该类的一个对象。