011--多态及Object类--利用案例轻松学习Java语言配套课件.ppt

011--多态及Object类--利用案例轻松学习Java语言配套课件.ppt

  1. 1、本文档共19页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第十一讲:多态及Object类 课程导入 11.1 多态的作用 11.2 多态的实现机制 11.3 对象向上转型 11.3 对象向上转型 11.3 对象向上转型 11.4 对象向下转型 11.4 对象向下转型 11.4 对象向下转型 11.5 Object类 11.5 Object类 11.5 Object类 11.5 Object类 11.5 Object类 11.6 课堂小结 11.7 作业 吉首大学软件服务外包学院 吉首大学软件服务外包学院 吉首大学软件服务外包学院 * 清华大学出版社 利用案例轻松学习Java语言(2013年) 配套课件PPT 不足之处请多多指教 (1)利用interface定义接口,利用implements实现接口; (2)子类可以继承一个父类实现多个接口,从而达到多重继承的目的。 1、已经学习的相关知识 2、思考问题 在图中,同样是吃东西,但不同的动物吃的东西不同,本次课讨论Java采用多态机制来实现不同对象能够选择不同的行为。 多态是指同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。 多态的作用 (1)提高了程序的抽象程度和简洁性; (2)最大程度降低了类和程序模块间的耦合性; (3)提高了类的封闭性,使得它们不需要了解对象的具体实现细节,就可以很好地共同工作。 自动 强制 一个学生对象一定是一个人吗? 一个教师对象一定是一个人吗? 一个子类的对象一定是父类的实例! 因此可以用父类对象指向子类实例! Person per= new Student() Person per= new Teacher() 程序案例11-1: 对象向上转型 父类A 定义子类B继承父类A 定义子类C继承父类A a1、a2是哪个类中的方法? 课堂练习11-1:动物都有需要吃东西,但鸡和猫吃的方法和东西不同,如鸡采用啄的方法吃米,而猫采用咬的方法吃鱼!结构如下图所示,利用对象多态完成该模型。 子类 子类对象=(子类)父类实例; 一个人对象一定是学生吗? 一个人对象一定是教师吗? 父类对象不一定是子类的实例! 必须进行强制转换! 对象的向下转型必须强制转换。因为一个父类对象不一定是某一个子类的实例。 语法格式11-2 对象向下转型 程序案例11-1: 对象向下转型 自动向上转型 父类对象是否子类的实例! 把父类对象强制转换为子类对象 课堂练习11-2:定义一个方法,该方法的参数是父类的对象,然后测试该方法接受父类的任意子类对象,并根据不同子类对象调用相应子类的方法。 (1)Object类是所有Java类的祖先类; (2)如果一个类在声明时没有继承其它类,那么这个类直接继承Object类。 class Student extends Object{} class Student{} 相同 程序案例11-3:覆写toString()方法 默认是Object的子类 覆写Object的类的方法 直接输出对象 (不覆写,则是哈希吗) 显示调用toString()方法,与17行结果一样 对象比较 比较对象的内容 比较对象的地址 std1==std2的值? Student std1=new Student(“奥巴马”,55); Student std2=new Student(“奥巴马”,55); std1.equals(std2)的值? Std1和std2 的内容一样吗? 程序案例11-4: 覆写equals()方法, 用来比较对象的内容 覆写Object的类的equals()方法 当前对象this与比较对象std的数据成员进行比较 测试equals()方法 Object类是所有类的祖先类,根据对象的多态性,通过自动向上转型实现接收任意对象。 Object对象接受任意实例 2、多态的两种实现方式的原理是什么? 多态是指同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。 1、什么是多态,举例说明? 例如同样是计算面积,对于长方形为长×宽,对于圆为πr2; (1)向上转型是自动进行的,因为子类的对象一定是父类的实例;通过子类继承父类,同时实现多个接口来实现多重继承。 (2)向下转型需要强制进行,因为父类的对象不一定是某个子类的实例,所以需要强制指定子对象的类型。 3、Object类中equals()方法的作用? equals()方法的默认比较的是当前对象和被比较对象的引用,覆写该方法用来比较两个对象的内容。 1、把动物的奔跑定义接口的方法,然后定义螃蟹、老虎类实现该接口的方法,螃蟹和老虎的奔跑方式不同,采用对象多态的方式测试不同动物的奔跑方式。 2、定义一个Dog类,属性有名称、体重、毛色、种类,方法有吃、玩、睡和吠,覆写toString()方法直接返回狗的属性信息,覆写equals()方法能够比较两只狗是

文档评论(0)

junjun37473 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档