欢迎来到天天文库
浏览记录
ID:56341233
大小:311.50 KB
页数:72页
时间:2020-06-11
《面向对象程序设计-Java语言05.ppt》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、第5章消息、继承、封装与多态世界是由各种各样的对象组成,对象之间的相互作用形成了这个丰富多彩的世界。在面向对象的系统中,对象之间的相互作用是通过一个对象向另一个对象发送消息的方式体现的。多个对象之间通过传递消息来请求或提供服务,从而使一个软件具有更强大的功能。封装是指类的设计者只是为类的使用者提供类的可以访问的部分(包括类的数据成员和成员方法),而把类中的其他成员隐藏起来,用户不能访问。继承是面向对象程序设计的一个重要特征,它是通过一个类派生子类来实现的,这种结构对充分利用已有的类来创建更复杂的类,实现代码的复用具有重要意义。
2、多态是面向对象的程序中同名不同方法共存的现象,引入多态机制可以提高类的抽象度和封闭性,统一类的对外接口。通过本章的学习,读者将深入了解类的这些特性。本章主要内容5.1消息5.2继承5.3抽象类、接口和包5.4封装5.5多态5.1消息在面向对象的系统中,对象间的相互作用是通过一个对象向另一个对象发送消息的方式来体现的。消息就是数据成员和成员方法的引用。消息的概念消息就是向对象发出服务请求,是对数据成员和成员方法的引用。消息的性质:(1)同一对象可接收不同形式的多个消息,产生不同的响应。(2)相同形式的消息可以发送给不同对象,所做
3、出的响应可以是截然不同的。(3)消息的发送可以不考虑具体的接收者,对象可以响应消息,也可以对消息不予理会,对消息的响应并不是必须的。公有消息和私有消息对象之间的消息传递称为公有消息;而对象内部数据成员或成员方法之间的调用称为私有消息。【例5.1】公有消息和私有消息示例。5.2继承继承是面向对象程序设计的又一种重要手段,在面向对象程序设计中,采用继承机制可以有效地组织程序结构,设计系统中的类,明确类之间的关系,充分利用已有的类来创建更复杂的类,大大提高程序开发的效率,提高代码的复用率,降低维护的工作量。继承的概念继承所表达的就是
4、一种对象类之间的相交关系,它使得某类对象可以继承另外一类对象的数据成员和成员方法。继承避免了对一般类和特殊类之间共同特征进行的重复描述,运用继承原则使得系统模型比较简练也比较清晰。父类与子类之间的关系如图所示:学生小学生中学生大学生研究生留学生初中生专科生高中生本科生硕士生博士生继承的特征(1)继承关系是传递的。(2)继承简化了人们对事物的认识和描述,能清晰体现相关类间的层次结构关系。(3)提供软件复用功能。(4)通过增强一致性来减少模块间的接口和界面,大大增加程序的易维护性。(5)提供多继承机制。继承的实现在Java程序设计
5、中,继承是通过extends关键字来实现的。在定义类时使用extends关键字指明新定义类的父类,新定义的类称为指定父类的子类,就在两个类之间建立了继承关系。这个新定义的子类可以从父类那里继承所有非private的属性和方法作为自己的成员。实际上,在定义一个类而不给出extends关键字及父类名时,默认这个类是系统类Object的子类。1.数据成员的继承:子类可以继承父类的所有非私有的数据成员。【例5.2】数据成员继承示例。2.数据成员的隐藏:在子类中重新定义一个与父类中已定义的数据成员名完全相同的数据成员,即子类拥有了两个相
6、同名字的数据成员,一个是继承父类的,另一个是自己定义的。当子类引用这个同名的数据成员时,默认操作是引用它自己定义的数据成员,而把从父类那里继承来的数据成员“隐藏”起来。当子类要操作继承自父类的同名数据成员时,可使用关键字super引导。【例5.3】数据成员隐藏示例。3.成员方法的继承:子类可以继承父类的非私有成员方法。【例5.4】成员方法继承示例。4.成员方法的覆盖:子类可以重新定义与父类同名的成员方法,实现对父类方法的覆盖。方法的覆盖与数据成员的隐藏的不同之处在于:子类隐藏父类的数据成员只是使之不可见,父类同名的数据成员在子
7、类对象中仍然占有自己独立的内存空间;而子类方法对父类同名方法的覆盖将清除父类方法占用的内存,从而使父类方法在子类对象中不复存在。【例5.5】成员方法覆盖示例。this与super1.this的使用场合。在一些容易混淆的场合,例如,成员方法的形参名与数据成员名相同,或者成员方法的局部变量名与数据成员名相同时,在方法内借助this来明确表示引用的是类的数据成员,而不是形参或局部变量,从而提高程序的可读性。简单地说,this代表了当前对象的一个引用,可将其理解为对象的另一个名字,通过这个名字可以顺利地访问对象、修改对象的数据成员、调
8、用对象的方法。归纳起来,this的使用场合有下述3种:(1)用来访问当前对象的数据成员,其使用形式如下:this.数据成员(2)用来访问当前对象的成员方法,其使用形式如下:this.成员方法(参数)(3)当有重载的构造方法时,用来引用同类的其他构造方法,其使用形式如下:thi
此文档下载收益归作者所有