《多态及Object类-利用案例轻松学习Java语言配套.ppt》由会员分享,可在线阅读,更多相关《多态及Object类-利用案例轻松学习Java语言配套.ppt(19页珍藏版)》请在金锄头文库上搜索。
1、吉首大学吉首大学软件服件服务外包学院外包学院第十一讲:多态及第十一讲:多态及Object类类清华大学出版社利用案例轻松学习Java语言(2013年) 配套课件PPT不足之处请多多指教吉首大学吉首大学软件服件服务外包学院外包学院课程导入课程导入(1)利用interface定义接口,利用implements实现接口;(2)子类可以继承一个父类实现多个接口,从而达到多重继承的目的。1、已经学习的相关知识、已经学习的相关知识2、思考问题、思考问题在图中,同样是吃东西,但不同的动物吃的东西不同,本次课讨论本次课讨论Java采用多态机制采用多态机制来实现不同对象能够选择不同来实现不同对象能够选择不同的行为
2、。的行为。吉首大学吉首大学软件服件服务外包学院外包学院吉首大学吉首大学软件服件服务外包学院外包学院11.1 11.1 多态的作用多态的作用多态多态是指同一操作作用于不不同的对象同的对象,可以有不同的解释不同的解释,产生不同的执行结果不同的执行结果。多多态的作用的作用(1)提高提高了程序的抽象程度和简洁性抽象程度和简洁性;(2)最大程度降低降低了类和程序模块间的耦合性耦合性;(3)提高提高了类的封闭性封闭性,使得它们不需要了解对象的具体实现细节,就可以很好地共同工作。吉首大学吉首大学软件服件服务外包学院外包学院11.2 11.2 多态的实现机制多态的实现机制自自动强制制吉首大学吉首大学软件服件服
3、务外包学院外包学院11.3 11.3 对象向上转型对象向上转型一个学生对象一定是一个人吗?一个教师对象一定是一个人吗?一个子一个子类的的对象一定是父象一定是父类的的实例!例!因此可以用父因此可以用父类对象指向子象指向子类实例!例!Person per= new Student()Person per= new Teacher()吉首大学吉首大学软件服件服务外包学院外包学院11.3 11.3 对象向上转型对象向上转型程序案例程序案例11-111-1:对象向上转型父父类A定定义子子类B继承父承父类A定定义子子类C继承父承父类Aa1、a2是哪个是哪个类中中的方法?的方法?吉首大学吉首大学软件服件服务
4、外包学院外包学院11.3 11.3 对象向上转型对象向上转型课堂练习课堂练习11-111-1:动物都有需要吃东西,但鸡和猫吃的方法和东西不同,如鸡采用啄的方法吃米,而猫采用咬的方法吃鱼!结构如下图所示,利用对象多态完成该模型。吉首大学吉首大学软件服件服务外包学院外包学院子子类 子子类对象象=(子(子类)父)父类实例例;11.4 11.4 对象向下转型对象向下转型一个人对象一定是学生吗?一个人对象一定是教师吗?父父类对象不一定是子象不一定是子类的的实例!例!必必须进行行强制制转换!对象的向下转型必须强制转换。因为一个父类对象不一定是某一个子类的实例。语法格式法格式11-2 对象向下象向下转型型吉
5、首大学吉首大学软件服件服务外包学院外包学院11.4 11.4 对象向下转型对象向下转型程序案例程序案例11-111-1:对象向下转型自自动向上向上转型型父父类对象是否子象是否子类的的实例!例!把父把父类对象象强制制转换为子子类对象象吉首大学吉首大学软件服件服务外包学院外包学院11.4 11.4 对象向下转型对象向下转型课堂练习课堂练习11-211-2:定义一个方法,该方法的参数是父类的对象,然后测试该方法接受父类的任意子类对象,并根据不同子类对象调用相应子类的方法。吉首大学吉首大学软件服件服务外包学院外包学院11.5 Object11.5 Object类类(1)Object类是所有Java类的
6、祖先类祖先类;(2)如果一个类在声明时没有继承其它类,那么这个类直接直接继承继承Object类类。class Student extends Objectclass Student相同相同吉首大学吉首大学软件服件服务外包学院外包学院11.5 Object11.5 Object类类程序案例程序案例11-311-3:覆写toString()方法默默认是是Object的子的子类覆写覆写Object的的类的方法的方法直接直接输出出对象象(不覆写,不覆写,则是哈希是哈希吗)显示示调用用toString()方法,方法,与与17行行结果一果一样吉首大学吉首大学软件服件服务外包学院外包学院11.5 Objec
7、t11.5 Object类类对象比较对象比较比较对象的内容比较对象的内容比较对象的地址比较对象的地址std1=std2的值?Student std1=new Student(“奥巴马”,55);Student std2=new Student(“奥巴马”,55);std1.equals(std2)的值?Std1和和std2的内容一的内容一样吗?吉首大学吉首大学软件服件服务外包学院外包学院11.5 Object11.5 Object类类程序案例程序案例11-411-4:覆写equals()方法,用来比较对象的内容覆写覆写Object的的类的的equals()方法方法当前当前对象象this与比与比
8、较对象象std的数据成的数据成员进行比行比较测试equals()方法方法吉首大学吉首大学软件服件服务外包学院外包学院11.5 Object11.5 Object类类Object类是所有类的祖先类,根据对象的多态性多态性,通过自动向上转型自动向上转型实现接收任意对象接收任意对象。Object对象接受象接受任意任意实例例吉首大学吉首大学软件服件服务外包学院外包学院11.6 11.6 课堂小结课堂小结2 2、多态的两种实现方式的原理是什么?、多态的两种实现方式的原理是什么?多态多态是指同一操作作用于不同的对象不同的对象,可以有不同的解释不同的解释,产生不同不同的执行结果的执行结果。1 1、什么是多态
9、,举例说明?、什么是多态,举例说明?例如同样是计算面积,对于长方形为长宽,对于圆为r2;(1)向上转型是自动进行的,因为子类的对象一定是父类的实例;通过子类继承父类,同时实现多个接口来实现多重继承。(2)向下转型需要强制进行,因为父类的对象不一定是某个子类的实例,所以需要强制指定子对象的类型。3 3、ObjectObject类中类中equals()equals()方法的作用?方法的作用?equals()方法的默认比较的是当前对象和被比较对象的引用,覆写该方法用来比较两个对象的内容。吉首大学吉首大学软件服件服务外包学院外包学院11.7 11.7 作业作业1、把动物的奔跑定义接口的方法,然后定义螃蟹、老虎螃蟹、老虎类实现该接口的方法,螃蟹和老虎的奔跑方式不同,采用对象多态的方式测试不同动物的奔跑方式。2、定义一个Dog类,属性有名称、体重、毛色、种类,方法有吃、玩、睡和吠,覆写toString()方法直接返回狗的属性信息,覆写equals()方法能够比较两只狗是否完全相同。吉首大学吉首大学软件服件服务外包学院外包学院清华大学出版社清华大学出版社利用案例轻松学习利用案例轻松学习Java语言语言(2013年)年) 配套课件配套课件PPT不足之处请多多指教不足之处请多多指教