第9讲Java继承与多态 (1).pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第6章 Java的继承与多态(二) 教学目标 掌握final关键字意义及使用方法 理解Object类的作用以及类的常用方法 了解多态的意义 掌握重载的使用方法 final关键字的使用 覆盖(overriding)固然有其便利性,但在设计类时,如果基于某些因素,父类的方法不希望子类的方法来覆盖它,便可在父类的方法之前加上“final”关键字,如此该方法便不会被覆盖。 extends可以实现继承,但实际应用中,出于某种考虑,当创建一个类时,希望该类的设计不做任何变动,或者出于安全因素,不希望它有任何子类,这时,可以使用“final”关键字。 用“final”关键字修饰的类,称为最终类。 Object类 在Java中,定义了一个类,这个类抽象了所有类共有的一些属性和方法,这个类的名字是Object。Object类是一切类的父类,所有的类均直接或间接继承它,是类之源。所以,Person类的父类是Object类。 Object类的方法 getClass()方法的使用 getClass()方法返回一个Class类对象,该对象内部包含了一些能够标识当前对象的信息。如果想知道某个对象obj是属于哪个类时,可用obj.getClass()来查询。 equals()方法的使用 equals()方法通过参数带入一个对象,并将它与当前对象进行比较,测试的是两个对象是否相等。如果是,则返回true,否则返回false,Ex6_8是一个简单的范例。 toString()方法的使用 toString()方法的功能是将对象的内容转换成字符串,并返回其内容。例如,若变量a是指向由类A所创建的对象时,则下面的语句会调用toString()方法,并输出所指向对象的内容: System.out.println(a); //输出a的内容之前会调用toString方法 上面的语句是以类类型的变量a当成println()的参数,此时,Java会先用变量a来调用toString()方法,再把结果当成println()的参数。也可以用下面的语法来便编写相同功能,且容易理解的语句: System.out.println(a.toString());//将a转换成字符串,再由println()输出 重载 所谓的“重载”是指相同的方法名称,若参数个数不同,方法便具有不同的功能。 重载是多态技术的一种。 多态的定义与作用 多态提供了另外一种分离接口和实现(即把“做什么”与“怎么做”分开)的一种尺度。 换句话说多态是在类体系中把设想(想要“做什么”)和实现(该“怎么做”)分开的手段,它是从设计的角度考虑的。 如果说继承性是系统的布局手段,多态性就是其功能实现的方法。 多态性意味着某种概括的动作可以由特定的方式来实现,这种特定的方式取决于执行该动作的对象。 多态的定义与作用 如果从面向对象的语义角度来看,可以简单理解为多态就是“相同的表达式,不同的操作”,也可以说成“相同的命令,不同的操作”。 多态有两种情况,一种是上一节的覆盖技术,另外就是重载技术。覆盖是在子类中直接定义和父类同样的属性和方法,但重新编写了方法体,即子类与父类方法的形参与返回值都相同,而内部处理不同,这种方法在使用过程中,Java虚拟机会根据调用这个方法的类来确定哪个方法被调用。 使用重载常犯的错误 运用方法重载需要注意的是,可以定义名称相同,但参数不同的方法;但不可以定义名称相同,而且参数也完全一致的方法。例如,下面的程序代码是行不通的。 public void setPerson(int age); public int setPerson(int age); 其原因是,一旦调用了setPerson()方法,程序无法判断是哪一个方法被调用。事实上,若尝试编译这样的类,编译器也会出现错误信息。 构造方法的重载 在Java中,不仅方法可以重载,构造方法也可以重载。同普通方法的重载,可以在一个类中定义几个构造方法,只要构造方法的参数列表不同即可。 实例 一:重载的使用 编写一个类,它的功能是计算两个数的和。 要求:编写多个求和方法,实现方法的重载。程序将根据参数的类型自动匹配计算和。 实例二:多态的设计 一个小孩得知邻居家养了几个宠物,但不知是猫是狗还是鸭子。于是丢一块石头到邻居家院中探明真相。这里,宠物作为基类,有一个sound()方法,即发声方法。而猫类,狗类,鸭类等都是宠物类的派生类,各有一个基类sound()的同名覆盖。 Animal是一个相对抽象的类。在现实世界中,每个动物都一定属于某个特定的种类,因此, Animal类中的sound()成员方法的方法体为空,即本身没有任何特定的操作,只是为了实现多态性

文档评论(0)

annylsq + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档