- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* 武汉理工大学信息学院《Java程序设计实用教程(第4版)》 3.4 类的多态性 3.4.1 子类重定义父类成员 3.4.2 类型的多态 3.4.3 编译时多态和运行时多态性 3.4.4 多态的方法实现 多态性 概念 什么是多态:一种定义,多种实。即同一种方法作用与不同的对象产生不同的结果的机制; 它使用不同的实例而执行不同操作; 如Java中’+’运算符,可以是两个数想加,也可以是两个字符串连接。具体执行哪种操作是由运算的对象实例决定。 武汉理工大学信息学院《Java程序设计实用教程(第4版)》 * 多态性 举例 父类 子类 - 绘制和移动三角形 子类 - 绘制和移动矩形 子类 - 绘制和移动五边形 Shape Draw () Move () Triangle Draw () { DrawTraingle } Move () { MoveTriangleVertices } Rectangle Draw () { DrawRectangle } Move () { MoveRectangleCorner } Pentagon Draw () { DrawPentagon } Move () { MovePentagonVertices } 武汉理工大学信息学院《Java程序设计实用教程(第4版)》 * 多态性作用 提供了公共访问接口,可在父类中定义形式,由各个子类自行实现 可以用父类的引用指向不同的子类的对象,实现一次性操作多个对象的机制 武汉理工大学信息学院《Java程序设计实用教程(第4版)》 * 3.4.1 子类重定义父类成员——多态性实现方法 重定义父类成员变量,则隐藏父类成员变量 子类覆盖父类成员方法 覆盖(override)是指子类声明并实现父类中的同名方法并且参数列表也完全相同。 子类继承并重载父类成员方法 重载(overload)是指同一个类中的多个方法可以同名但参数列表必须不同。 武汉理工大学信息学院《Java程序设计实用教程(第4版)》 * 武汉理工大学信息学院《Java程序设计实用教程(第4版)》 * 【例3.5】 Student类重定义从父类继承来的成员。 方法名和参数完全相同,则被覆盖;方法名同而参数不同,则重载 例3.5分析 Student和Person类中都声明私有的静态成员变量count,Person的count在子类中被隐藏,需要使用super.count访问; howMany方法在子类Student中采用扩展的方式重写 Set方法被子类Student继承并重载 * super使用 调用父类的构造方法 super([参数列表]) 引用父类同名成员 子类隐藏父类成员变量 super.成员变量 子类覆盖父类成员方法 super.成员方法([参数列表]) 武汉理工大学信息学院《Java程序设计实用教程(第4版)》 * 在子类里面调用被隐藏或者覆盖的父类成员的方式 * 武汉理工大学信息学院《Java程序设计实用教程(第4版)》 3.4.2 类型的多态 1. 子类对象即是父类对象 new Student() instanceof Person //true new Person() instanceof Student //false 2. 父类对象引用子类实例 Person p = new Student(); //赋值相容 Student s = new Person(); //语法错 Object obj = new Person(); //赋值相容 子类通过继承扩展父类,子类是父类的一种特殊情况,子类对象包含了父类的所有成员变量。 通过引用p能访问到Student类中的所有成员吗? p只能访问父类Person类中声明的方法,但是执行的是被子类重载的方法。 父类对象引用子类实例成立,反之错误 父类对象引用子类实例举例 public class Test { public void printHello(){ System.out.println(Hello); } } public class TestExtend extends Test { public void printWorld(){ System.out.println( World); } public void printHello(){ System.out.println(Hello in extend Class); } public static void main(String[] args) { Test t = new TestExtend(); t.printWorld(); t.printHello();
文档评论(0)