第7讲 继承和多态(下).ppt

第7讲 继承和多态(下).ppt

ID:48755236

大小:530.50 KB

页数:36页

时间:2020-01-21

第7讲 继承和多态(下).ppt_第1页
第7讲 继承和多态(下).ppt_第2页
第7讲 继承和多态(下).ppt_第3页
第7讲 继承和多态(下).ppt_第4页
第7讲 继承和多态(下).ppt_第5页
资源描述:

《第7讲 继承和多态(下).ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Java语言概述1第七讲继承和多态(下)西亚斯学院计算机系姜斌2011年一、多态和动态绑定1.多态2.动态绑定二、接口(Interface)1.类和类型2.接口的概念3.接口声明和实现三、类库中日期操作涉及的类一、多态和动态绑定1.Polymorphism2.DynamicBindingJava语言概述41、多态性涵义(Polymorphism)多态性是面向对象程序设计的重要特性;面对对象程序设计中,严格说来多态性是运行绑定机制(即动态绑定机制)。这种机制实现将方法名绑定到方法的具体实现代码。书上提

2、到的多态性,为广义的多态性,有特殊多态和纯多态;按照消息选择响应方法的角度,多态又分为两者:即编译多态和运行多态;2.动态绑定涵义实现编译多态方法为方法的重载实现运行多态,通过继承机制,然后通过运行时的动态绑定方式实现方法调用。注意:Java经常应用的多态为运行多态,此为讲解重点。Java语言概述63.继承中的多态多态规则一:对于数据来说,继承是否为正确的设计可以用一个简单的规则来判断。“is-a”规则表明子类的每一个对象都是其超类的对象。例如,每一个经理是一个员工。(IS-A关系)然而,只有经理类

3、是员工类的子类才是有意义的。很明显,反过来就不行了——并不是每个员工都是经理。应用例子:员工经理的对象定义Employeee1=newManager();多态规则2:还有一个明确叙述“is-a”规则的方法是替换原则。该原则规定无论何时,如果程序需要一个超类对象,都可以用一个子类对象来代替。结论:可以通过超类变量来引用子类对象应用例子:如果一个方法的形式参数定义的是父类对象,那么调用这个方法时,可以使用子类对象作为实参;publicvoidshowMessage(Employeee)//方法定义sho

4、wMessage(boss);//方法调用Java语言概述8运行多态:是指在调用时,一个继承关系中父类变量e可以引用多种实际类型的对象(可以子类或父类),例如:使用多个基类变量来引用若干个不同的子类对象,来使多个变量元素在指向不同对象时使用其相应的成员方法。动态绑定:由于多态,一个对象引用可以指向子类或父类的对象。在运行时自动选择正确的对象的成员方法进行调用称作动态绑定(dynamicbinding)。继承树结构:EmployeeManagerManager对象也可以看待Employee对象或Obj

5、ect对象,具有多态性Object子态父态4.运行多态和动态绑定定义Java语言概述9理解调用一个对象方法的机制是非常重要的。下面调用一个方法x.f(参数),x是一个D类的对象:1)编译器检查对象的声明类型和方法名。2)接着,编译器检查方法调用中的参数列表。如果在所有的叫做f的方法中其参数列表同调用提供的参数类型最匹配,那么该方法就会被选择调用。这个过程称作超载选择。3)当方法类型为private、static、final或是一个构造函数,那么编译器会准确地知道调用哪个方法。这叫做静态绑定5.方法调

6、用机制(**理解动态绑定)Java语言概述104)当程序运行并且使用动态绑定来调用一个方法时,那么虚拟机必须调用同x所指向的对象的实际类型相匹配的方法版本。假设实际类型为D(C的子类),首先,解释器会在D的父类C中搜寻方法f(String),如没有发现,则报错,如有,继续然后,如果类D对方法f(String)覆盖,那么该方法就会被调用,否则,调用父类f方法例子1:动物应用中的例子用Animal父类声明,分别引用Animal父类对象,Cat子类对象,以及Bird子类对象Animala1=newAnim

7、al();Animalb1=newBird();Animalc1=newCat();Move()方法在子类中覆盖了,试着看调用move方法的特点,理解动态绑定。Java语言概述12Employee[]staff=newEmployee[3];staff[0]=boss;//是一个Manager类的对象staff[1]=newEmployee(…)//Employee对象staff[2]=newEmployee(…)通过循环取出数组中的每个元素,调用e.getSalary()方法。程序会选择正确的ge

8、tSalary()方法。当e指向一个Employee对象时,e.getSalary()会调用Employee类中的getSalary方法;而当e指向一个Manager对象时,getSalary()方法就变成了Manager类的getSalary()方法。例子2:动态绑定在通过数组使用例子:Java语言概述136.在多态中方法调用规则(通过父类变量e引用子类对象)SuperClasse=newSubClass();对于e.f()方法;1)如果调用方法在父类中定义,在子类

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。