第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..*);整数范围,
- 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关键字
➢ 在前面多态的讲解中,如果方法的参数被定义为一个接口类型,那么就需要定 义一个类来实现接口,并根据该类进行对象实例化。除此之外,还可以使用匿 名内部类来实现接口。所谓匿名内部类就是没有名字的内部类,表面上看起来 它似乎有名字,实际那不是它的名字。当程序中使用匿名内部类时,在定义匿 名内部类的地方往往直接创建该类的一个对象。