- 1、本文档共36页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
java程序的设计任务驱动式的教程09章节
*/36 5. 根类Object 在Java 中,所有的类都是通过直接或间接地继承java.lang.Object类得到的,Object类是一切类的祖先,称为根类。 当定义类,而没有使用extends关键字时,表示所定义类的父类为Object类,这是Java中的一种特别约定。根类Object类的方法如clone()、equals(obj)、finalize()、getClass()、hashCode()、notify()、notifyAll()、toString()、wait()等,子类都可以通过继承,进行调用。 关于toString()方法,在任务六的类的定义中,通过重写,已经多次使用了该方法。 9.4 必备知识 */36 9.4.2 类的多态 1. 多态的概念 多态是指一个方法声明的多种实现状态,即在程序中同名的不同方法共存,调用者只需要使用同一个方法名,系统会根据不同情况,调用相应的方法,从而实现不同的功能。简而言之,多态性即“一个名字,多个方法”。例如,父类Vehicle中有如下方法: public void accelerate(){ …… } 在子类Bus中,也有accelerate()方法: public void accelerate(){ //方法重写 …… } 在程序中同名的不同方法共存,形成了多态。 2. 多态的意义 在面向对象程序设计中,多态是具有表现多种形态的能力的特征,有时需要利用方法的重名,提高程序的抽象度和简洁性,以及程序的可扩展性及可维护性。例如使用多态之后,当需要增加新的子类PoliceCar警车类时,无需更改父类Vehicle,代码得到了扩展,维护起来也方便。 9.4 必备知识 */36 3.多态的分类 多态分为静态多态和动态多态。静态多态指通过同一个类中的方法重载实现的多态,动态多态指通过类与类之间的方法重写实现的多态。方法重载参见8.4.4。方法重写参见本任务9.4.1 类的继承4.子类与父类的关系⑶ 子类中方法重写部分。 静态多态是编译时多态,指程序会根据参数的不同来调用相应的方法,具体调用哪个被重载的方法,由编译器在编译阶段静态决定。 动态多态是运行时多态,指在运行时根据调用该方法的实例的类型来决定调用哪个重写方法。 静态多态对程序运行更有效率,动态多态更具有灵活性。 4.多态的实现 多态通过给同一个方法定义几个版本来实现的。例如,现有三个类,Grandfather类是Father类的父类,Father类是Child类的父类。三个类的代码如下: 9.4 必备知识 */36 package com.task09; /** * Grandfather.java * 多态,本类作为Father的父类 */ public class Grandfather { int i; int j; /** * @param i * @param j */ public Grandfather(int i, int j) { this.i = i; this.j = j; } int smoke(){ System.out.println(Grandfather的方法smoke():); return i+j; } } 9.4 必备知识 */36 package com.task09; /** * Father.java * 多态,本类作为Grandfather的子类,本类作为Child的父类 */ public class Father extends Grandfather { /** * @param i * @param j */ public Father(int i, int j) { super(i, j); } int drink(){ System.out.println(Father的方法drink():); return 0; } } 9.4 必备知识 */36 package com.task09; /** * Child.java * 多态,本类作为Father的子类 */ public class Child extends Father { /** * @param i * @param j */ public Child(int i, int j) { //子类的构造方法 super(i, j); //调用父类的构造方法 } int drink(){ //重写了父类的方法 System.out.println(Child重写的方法drink():); return i*j; }
您可能关注的文档
最近下载
- 继续教育《生态文明建设的理论与实践》考试试题及答案.docx VIP
- YMO青少年数学思维27届1-6年级全国总决赛试卷.pdf VIP
- 部编版小学语文四年级下册《古诗三首》《芙蓉楼送辛渐》预习单知识要点梳理.pdf
- 2024-2025学年高考数学一轮复习讲义:指数与指数函数(学生版+解析).pdf VIP
- 罗宾斯组织行为学第18版英文教学课件robbinsjudge_ob18_inppt_04.pptx
- 2024年中考英语热点阅读练习专题2 科学技术(含解析) .pdf VIP
- 质量部QC组年度工作总结暨年工作规划(PPT59页) .ppt
- WPS表格初级试题含答案.doc
- 2024年中考英语时文阅读06(科技与体育).doc VIP
- 2023年内蒙古大学公共课《中国近代史纲要》期末试卷A(有答案).docx VIP
文档评论(0)