面向对象程序设计-Java语言精选PPT讲稿.ppt
《面向对象程序设计-Java语言精选PPT讲稿.ppt》由会员分享,可在线阅读,更多相关《面向对象程序设计-Java语言精选PPT讲稿.ppt(72页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、关于面向对象程序设计关于面向对象程序设计-Java语言语言第一页,讲稿共七十二页哦而把类中的其他成员隐藏起来,用户不能访问。而把类中的其他成员隐藏起来,用户不能访问。继承是面向对象程序设计的一个重要特征,它继承是面向对象程序设计的一个重要特征,它是通过一个类派生子类来实现的,这种结构对是通过一个类派生子类来实现的,这种结构对充分利用已有的类来创建更复杂的类,实现代充分利用已有的类来创建更复杂的类,实现代码的复用具有重要意义。多态是面向对象的程码的复用具有重要意义。多态是面向对象的程序中同名不同方法共存的现象,引入多态机制序中同名不同方法共存的现象,引入多态机制可以提高类的抽象度和封闭性,统一类
2、的对外可以提高类的抽象度和封闭性,统一类的对外接口。通过本章的学习,读者将深入了解类的接口。通过本章的学习,读者将深入了解类的这些特性。这些特性。第二页,讲稿共七十二页哦本章主要内容本章主要内容5.1 消息消息5.2 继承继承 5.3 抽象类、接口和包抽象类、接口和包5.4 封装封装5.5 多态多态 第三页,讲稿共七十二页哦5.1 消消 息息在面向对象的系统中,对象间的相互作用是通在面向对象的系统中,对象间的相互作用是通过一个对象向另一个对象发送消息的方式来体过一个对象向另一个对象发送消息的方式来体现的。消息就是数据成员和成员方法的引用。现的。消息就是数据成员和成员方法的引用。第四页,讲稿共七
3、十二页哦消息的概念消息的概念 消息就是向对象发出服务请求,是对消息就是向对象发出服务请求,是对数据成员和成员方法的引用。数据成员和成员方法的引用。消息的性质:消息的性质:(1)同一对象可接收不同形式的多)同一对象可接收不同形式的多个消息,产生不同的响应。个消息,产生不同的响应。第五页,讲稿共七十二页哦(2)相同形式的消息可以发送给不同)相同形式的消息可以发送给不同对象,所做出的响应可以是截然不同对象,所做出的响应可以是截然不同的。的。(3)消息的发送可以不考虑具体的接)消息的发送可以不考虑具体的接收者,对象可以响应消息,也可以对收者,对象可以响应消息,也可以对消息不予理会,对消息的响应并不是消
4、息不予理会,对消息的响应并不是必须的。必须的。第六页,讲稿共七十二页哦公有消息和私有消息公有消息和私有消息 对象之间的消息传递称为公有消对象之间的消息传递称为公有消息;而对象内部数据成员或成员方息;而对象内部数据成员或成员方法之间的调用称为私有消息。法之间的调用称为私有消息。【例例5.1】公有消息和私有消息示公有消息和私有消息示例。例。第七页,讲稿共七十二页哦5.2 继继 承承继承是面向对象程序设计的又一种重要继承是面向对象程序设计的又一种重要手段,在面向对象程序设计中,采用继手段,在面向对象程序设计中,采用继承机制可以有效地组织程序结构,设计承机制可以有效地组织程序结构,设计系统中的类,明确
5、类之间的关系,充分系统中的类,明确类之间的关系,充分利用已有的类来创建更复杂的类,大大利用已有的类来创建更复杂的类,大大提高程序开发的效率,提高代码的复用提高程序开发的效率,提高代码的复用率,降低维护的工作量。率,降低维护的工作量。第八页,讲稿共七十二页哦 继承的概念继承的概念 继承所表达的就是一种对象类之间继承所表达的就是一种对象类之间的相交关系,它使得某类对象可以的相交关系,它使得某类对象可以继承另外一类对象的数据成员和成继承另外一类对象的数据成员和成员方法。员方法。继承避免了对一般类和特殊类之间共继承避免了对一般类和特殊类之间共同特征进行的重复描述,运用继承原同特征进行的重复描述,运用继
6、承原则使得系统模型比较简练也比较清晰。则使得系统模型比较简练也比较清晰。第九页,讲稿共七十二页哦父类与子类之间的关系如图所示:父类与子类之间的关系如图所示:学生小学生中学生大学生研究生留学生初中生专科生高中生本科生硕士生博士生第十页,讲稿共七十二页哦继承的特征继承的特征(1)继承关系是传递的。)继承关系是传递的。(2)继承简化了人们对事物的认识和描述,)继承简化了人们对事物的认识和描述,能清晰体现相关类间的层次结构关系。能清晰体现相关类间的层次结构关系。(3)提供软件复用功能。)提供软件复用功能。(4)通过增强一致性来减少模块间的接)通过增强一致性来减少模块间的接口和界面,大大增加程序的易维护
7、性。口和界面,大大增加程序的易维护性。(5)提供多继承机制。)提供多继承机制。第十一页,讲稿共七十二页哦 继承的实现继承的实现 在在Java程序设计中,继承是通过程序设计中,继承是通过extends关键字来实现的。在定义类时使用关键字来实现的。在定义类时使用extends关键字指明新定义类的父类,新定关键字指明新定义类的父类,新定义的类称为指定父类的子类,就在两个类义的类称为指定父类的子类,就在两个类之间建立了继承关系。这个新定义的子类之间建立了继承关系。这个新定义的子类可以从父类那里继承所有非可以从父类那里继承所有非private的属性的属性和方法作为自己的成员。实际上,在定义和方法作为自己
8、的成员。实际上,在定义一个类而不给出一个类而不给出extends关键字及父类名关键字及父类名时,默认这个类是系统类时,默认这个类是系统类Object的子类。的子类。第十二页,讲稿共七十二页哦1数据成员的继承:子类可以继承父类的数据成员的继承:子类可以继承父类的所有非私有的数据成员。所有非私有的数据成员。【例例5.2】数据成员继承示例。数据成员继承示例。2数据成员的隐藏数据成员的隐藏:在子类中重新定:在子类中重新定义一个与父类中已定义的数据成员名完义一个与父类中已定义的数据成员名完全相同的数据成员,即子类拥有了两个全相同的数据成员,即子类拥有了两个相同名字的数据成员,一个是继承父类相同名字的数据
9、成员,一个是继承父类的,另一个是自己定义的。的,另一个是自己定义的。第十三页,讲稿共七十二页哦当子类引用这个同名的数据成员时,当子类引用这个同名的数据成员时,默认操作是引用它自己定义的数据默认操作是引用它自己定义的数据成员,而把从父类那里继承来的数成员,而把从父类那里继承来的数据成员据成员“隐藏隐藏”起来。当子类要操起来。当子类要操作继承自父类的同名数据成员时,作继承自父类的同名数据成员时,可使用关键字可使用关键字super引导。引导。【例例5.3】数据成员隐藏示例。数据成员隐藏示例。第十四页,讲稿共七十二页哦3成员方法的继承:子类可以继承父成员方法的继承:子类可以继承父类的非私有成员方法。类
10、的非私有成员方法。【例例5.4】成员方法继承示例。成员方法继承示例。4成员方法的覆盖:子类可以重成员方法的覆盖:子类可以重新定义与父类同名的成员方法,实新定义与父类同名的成员方法,实现对父类方法的覆盖。方法的覆盖现对父类方法的覆盖。方法的覆盖与数据成员的隐藏的不同之处在于:与数据成员的隐藏的不同之处在于:第十五页,讲稿共七十二页哦子类隐藏父类的数据成员只是使之子类隐藏父类的数据成员只是使之不可见,父类同名的数据成员在子不可见,父类同名的数据成员在子类对象中仍然占有自己独立的内存类对象中仍然占有自己独立的内存空间;而子类方法对父类同名方法空间;而子类方法对父类同名方法的覆盖将清除父类方法占用的内
11、存,的覆盖将清除父类方法占用的内存,从而使父类方法在子类对象中不复从而使父类方法在子类对象中不复存在。存在。【例例5.5】成员方法覆盖示例。成员方法覆盖示例。第十六页,讲稿共七十二页哦this与与super 1this的使用场合。在一些容易混的使用场合。在一些容易混淆的场合,例如,成员方法的形参淆的场合,例如,成员方法的形参名与数据成员名相同,或者成员方名与数据成员名相同,或者成员方法的局部变量名与数据成员名相同法的局部变量名与数据成员名相同时,在方法内借助时,在方法内借助this来明确表示引来明确表示引用的是类的数据成员,而不是形参或用的是类的数据成员,而不是形参或局部变量,从而提高程序的可
12、读性。局部变量,从而提高程序的可读性。第十七页,讲稿共七十二页哦简单地说,简单地说,this代表了当前对象的一代表了当前对象的一个引用,可将其理解为对象的另一个引用,可将其理解为对象的另一个名字,通过这个名字可以顺利地个名字,通过这个名字可以顺利地访问对象、修改对象的数据成员、访问对象、修改对象的数据成员、调用对象的方法。归纳起来,调用对象的方法。归纳起来,this的的使用场合有下述使用场合有下述3种:种:第十八页,讲稿共七十二页哦(1)用来访问当前对象的数据成员,其使)用来访问当前对象的数据成员,其使用形式如下:用形式如下:this.数据成员数据成员(2)用来访问当前对象的成员方法,其使)用
13、来访问当前对象的成员方法,其使用形式如下:用形式如下:this.成员方法(参数)成员方法(参数)(3)当有重载的构造方法时,用来引用同类)当有重载的构造方法时,用来引用同类的其他构造方法,其使用形式如下:的其他构造方法,其使用形式如下:this(参数)(参数)第十九页,讲稿共七十二页哦【例例5.6】this使用示例。使用示例。【例例5.7】使用使用this示例。示例。2super的使用场合。的使用场合。super表示的表示的是当前对象的直接父类对象,是当是当前对象的直接父类对象,是当前对象的直接父类对象的引用。前对象的直接父类对象的引用。super的使用方法有的使用方法有3种:种:第二十页,讲
14、稿共七十二页哦(1)用来访问直接父类隐藏的数据成)用来访问直接父类隐藏的数据成员,其使用形式如下:员,其使用形式如下:super.数据成员数据成员(2)用来调用直接父类中被覆盖的成)用来调用直接父类中被覆盖的成员方法,其使用形式如下:员方法,其使用形式如下:super.成员方法(参数)成员方法(参数)(3)用来调用直接父类的构造方法,)用来调用直接父类的构造方法,其使用形式如下:其使用形式如下:super(参数)(参数)【例例5.8】super使用示例。使用示例。第二十一页,讲稿共七十二页哦5.3 抽象类、接口和包抽象类、接口和包抽象类体现数据抽象的思想,是实抽象类体现数据抽象的思想,是实现程
15、序多态性的一种手段。接口则现程序多态性的一种手段。接口则是是Java中实现多重继承的唯一途径。中实现多重继承的唯一途径。包是一个更大的程序单位,主要实现包是一个更大的程序单位,主要实现软件复用。软件复用。第二十二页,讲稿共七十二页哦 抽象类抽象类 假设要编写一个计算圆、三角形和矩形假设要编写一个计算圆、三角形和矩形面积与周长的程序,若按前面所学的方式面积与周长的程序,若按前面所学的方式编程,必须定义编程,必须定义4个类:圆类、三角形类、个类:圆类、三角形类、矩形类和使用前矩形类和使用前3个类的公共类,它们之个类的公共类,它们之间没有继承关系。程序写好后虽然能执间没有继承关系。程序写好后虽然能执
16、行,但从程序的整体结构上看,行,但从程序的整体结构上看,3个类之个类之间的许多共同属性和操作在程序中没有间的许多共同属性和操作在程序中没有很好地利用,很好地利用,第二十三页,讲稿共七十二页哦如图所示,致使重复编写代码,降如图所示,致使重复编写代码,降低了程序的开发效率,且使出现错低了程序的开发效率,且使出现错误的机会增加。误的机会增加。圆类圆类圆心坐标圆心坐标半径半径计算面积计算面积计算周长计算周长三角形类三角形类底边长底边长高高计算面积计算面积计算周长计算周长矩形类矩形类长长宽宽计算面积计算面积计算周长计算周长第二十四页,讲稿共七十二页哦分析上面例子中的分析上面例子中的3个类,可以看到个类,
17、可以看到这这3个类都要计算面积与周长,虽然个类都要计算面积与周长,虽然公式不同但目标相同。因此,可以公式不同但目标相同。因此,可以为这为这3个类抽象出个类抽象出1个父类,在父类里个父类,在父类里定义圆、三角形和矩形定义圆、三角形和矩形3个类共同的数个类共同的数据成员及成员方法,把计算面积与周据成员及成员方法,把计算面积与周长的成员方法名放在父类给予说明,长的成员方法名放在父类给予说明,而具体的计算公式再在子类中实现。而具体的计算公式再在子类中实现。第二十五页,讲稿共七十二页哦这样,通过父类就大概知道子类所要这样,通过父类就大概知道子类所要完成的任务,而且,这些方法还可以完成的任务,而且,这些方
18、法还可以应用于求解平行四边形、梯形等图形应用于求解平行四边形、梯形等图形的周长与面积,如图的周长与面积,如图5-4所示。这种所示。这种结构就是抽象类的概念。结构就是抽象类的概念。第二十六页,讲稿共七十二页哦抽象类抽象类抽象方法抽象方法梯形类梯形类上上、下下底底边边长长高高抽象方法抽象方法圆类圆类圆心坐标圆心坐标半径半径计算面积计算面积计算周长计算周长三角形类三角形类底边长底边长高高计算面积计算面积计算周长计算周长矩形类矩形类长长宽宽计算面积计算面积计算周长计算周长第二十七页,讲稿共七十二页哦抽象类刻画了公有行为的特征,并通过继抽象类刻画了公有行为的特征,并通过继承机制传送给它的派生类。在抽象类
19、中定承机制传送给它的派生类。在抽象类中定义的方法称为抽象方法,这些方法只有方义的方法称为抽象方法,这些方法只有方法头的声明,而用一个分号来代替方法体法头的声明,而用一个分号来代替方法体的定义,即只定义成员方法的接口形式,的定义,即只定义成员方法的接口形式,而没有具体操作,只有派生类对抽象成员而没有具体操作,只有派生类对抽象成员方法的重定义才能真正实现与该派生类相方法的重定义才能真正实现与该派生类相关的操作。关的操作。第二十八页,讲稿共七十二页哦在各子类继承了父类的抽象方法之后,再在各子类继承了父类的抽象方法之后,再分别用不同的语句和方法体来重新定义它,分别用不同的语句和方法体来重新定义它,形成
20、若干个名字相同、返回值相同、参数形成若干个名字相同、返回值相同、参数列表相同、目的一致但是具体实现有一定列表相同、目的一致但是具体实现有一定差别的方法。抽象类中定义抽象方法的目差别的方法。抽象类中定义抽象方法的目的是实现一个接口,多种方法的原理,即的是实现一个接口,多种方法的原理,即所有的子类对外都呈现一个相同名字的方所有的子类对外都呈现一个相同名字的方法。法。第二十九页,讲稿共七十二页哦抽象类是它的所有子类公共属性的集合,抽象类是它的所有子类公共属性的集合,是包含一个或多个抽象方法的类。使用抽是包含一个或多个抽象方法的类。使用抽象类的一大优点就是可以充分利用这些公象类的一大优点就是可以充分利
21、用这些公共属性来提高开发和维护程序的效率。对共属性来提高开发和维护程序的效率。对于抽象类与抽象方法的限制如下:于抽象类与抽象方法的限制如下:(1)凡是用)凡是用abstract修饰符修饰的类被称为修饰符修饰的类被称为抽象类。凡是用抽象类。凡是用abstract修饰符修饰的成员修饰符修饰的成员方法被称为抽象方法。方法被称为抽象方法。第三十页,讲稿共七十二页哦(2)抽象类中可以有零个或多个抽象方法,也)抽象类中可以有零个或多个抽象方法,也可以包含非抽象方法。可以包含非抽象方法。(3)抽象类中可以没有抽象方法,但是,有抽)抽象类中可以没有抽象方法,但是,有抽象方法的类必须是抽象类。象方法的类必须是抽
22、象类。(4)对于抽象方法来说,在抽象类中只指定)对于抽象方法来说,在抽象类中只指定其方法名及其类型,而不书写其实现代码。其方法名及其类型,而不书写其实现代码。(5)抽象类可以派生子类,在抽象类派生的非)抽象类可以派生子类,在抽象类派生的非抽象子类中必须实现抽象类中定义的所有抽象抽象子类中必须实现抽象类中定义的所有抽象方法。方法。第三十一页,讲稿共七十二页哦(6)抽象类不能创建对象,创建对象的工作由抽)抽象类不能创建对象,创建对象的工作由抽象类派生的非抽象子类来实现。象类派生的非抽象子类来实现。(7)如果父类中已有同名的)如果父类中已有同名的abstract方法,则子类方法,则子类中就不能再有同
23、名的抽象方法。中就不能再有同名的抽象方法。(8)abstract不能与不能与final并列修饰同一个类。并列修饰同一个类。(9)abstract不能与不能与private、static、final或或native并列修饰同一个方法。并列修饰同一个方法。(10)abstract类中不能有类中不能有private的数据成员或成的数据成员或成员方法。员方法。第三十二页,讲稿共七十二页哦【例例5.9】抽象类应用。抽象类应用。注意:注意:在上例中,只能在在上例中,只能在C5_9类中类中main方法中方法中定义定义3个子类的对象,使它们称为个子类的对象,使它们称为main方方法的局部对象,而不能将它们定义
24、在法的局部对象,而不能将它们定义在main方法之外,因为非方法之外,因为非static方法是不能方法是不能在在static方法中被引用的,而方法中的局方法中被引用的,而方法中的局部变量不能带修饰符,它们不受此限制。部变量不能带修饰符,它们不受此限制。第三十三页,讲稿共七十二页哦 接口接口 多重继承是指一个子类可以有多个直接父多重继承是指一个子类可以有多个直接父类,该子类可以全部或部分继承所有类,该子类可以全部或部分继承所有直接父类的数据成员及成员方法。直接父类的数据成员及成员方法。在面向对象的程序设计语言中,有些语言在面向对象的程序设计语言中,有些语言(如(如C+)提供了多继承机制。而)提供了
25、多继承机制。而Java出于安全性、简化程序结构的考出于安全性、简化程序结构的考虑,不支持类间的多继承而只支持单虑,不支持类间的多继承而只支持单继承。继承。第三十四页,讲稿共七十二页哦然而在解决实际问题的过程中,在很然而在解决实际问题的过程中,在很多情况下仅仅依靠单继承不能将复杂多情况下仅仅依靠单继承不能将复杂的问题描述清楚。为了的问题描述清楚。为了Java程序的程序的类间层次结构更加合理,更符合实类间层次结构更加合理,更符合实际问题的本质要求,际问题的本质要求,Java语言提供语言提供接口来实现多重继承机制。接口来实现多重继承机制。第三十五页,讲稿共七十二页哦1声明接口,格式如下:声明接口,格
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 程序设计 Java 语言 精选 PPT 讲稿
限制150内