继承性及多态性.ppt

  1. 1、本文档共25页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
继承性和多态性 第4章 继承性和多态性 主要内容 4.1 继承性 派生类的定义 super关键字 protected和final关键字 4.2 多态性 4.3 抽象类和接口 抽象类 接口 4.4 初始化块 4.1 继承性 类具有继承性,子类对父类的继承关系体现了现实世界中特殊和一般的关系。通过继承可以更有效地组织程序结构,明确类间关系,并充分利用已有的类来完成更复杂、深入的开发。 4.1.1 派生类的定义 Java中的所有类都是java.lang.Object类的子类。 Java语言中派生类的定义格式如下: 示例:参看例4.1 4.1.2 super关键字 1. 数据成员的隐藏 数据成员的隐藏是指在子类中重新定义一个与父类中已定义的数据成员名完全相同的数据成员,即子类拥有了两个相同名字的数据成员,一个是继承父类的,另一个是自己定义的。 当子类要操作继承自父类的同名数据成员时,可使用关键字super引导。 2. 成员方法的覆盖 子类可以重新定义与父类格式完全相同(包括方法名、方法形参的个数和类型、方法返回值的类型)的成员方法,实现对父类方法的覆盖。 关于方法覆盖 只有当实例方法能被访问时,才能进行方法覆盖。私有方法不能被覆盖. 静态方法(类方法)能被继承,但不能被覆盖。 子类在重新定义父类已有的方法时,应保持与父类完全相同的方法名、返回值类型和参数列表,否则就不是方法的覆盖,而是子类定义自己特有的方法,与父类的方法无关。 3. super关键字 super表示的是当前对象的直接父类对象,是当前对象的直接父类对象的引用。 super的使用方法有三种: (1) 访问直接父类隐藏的数据成员,其使用形式如下: super.数据成员 (2) 调用直接父类中被覆盖的成员方法,其使用形式如下: super.成员方法(参数) (3) 调用直接父类的构造方法,其使用形式如下: super(参数) 示例:参看例4.2 4.1.3 protected和final关键字 1. protected关键字 用protected修饰的成员变量可以被三种类所引:该类自身、与它在同一个包中的其它类及在其它包中的该类的子类。 2. final关键字 使用final关键字可以定义常量。 定义类时,在class关键字前加关键字final,表示此类是最终类,不能被其它类继承,不能做父类。 用final修饰成员方法,表示此方法不能被它的子类覆盖。 3. native关键字 native修饰的方法称为本地方法,此方法使用的目的是为了将其它语言(例如,C、C++、FORTRAN、汇编等)嵌入到Java语言中。这样可以充分利用已经存在的其它语言的程序功能模块,避免重复编程。 4.2 多态性 多态是面向对象程序设计语言的一个重要特性,在Java中,可以在同一类或不同类中定义名称相同但是操作不同的多个方法,多态性指的是运行时判断应该执行哪个方法代码的能力,这种能力也叫动态绑定。 在Java语言中,多态性分为编译时多态性和运行时多态性。编译时的多态性是通过方法重载实现的,Java虚拟机根据传递给方法的参数个数和类型决定调用哪个重载方法。 运行时的多态性是Java多态性的最重要的体现,在Java语言的继承关系中,子类对象与父类对象之间有一个重要特性:在任何需要父类对象的地方,都可以使用子类对象来代替,即子类对象可以作为父类对象来使用。一个对象可以通过引用子类的实例来调用子类的方法,通常,方法在父类中定义,在子类中覆盖,子类中调用哪个方法是在运行时决定的,取决于对象的类型,称为运行时的多态性。 示例:参看例4.3 4.3 抽象类和接口 抽象类体现数据抽象的思想,是实现程序多态性的一种手段。接口则是Java中实现多重继承的唯一途径。 4.3.1 抽象类 抽象类的作用在于将许多有关的类组织在一起,提供一个公共的类,即抽象类,而那些被它组织在一起的具体的类做为它的子类由它派生出来。 定义一个抽象类的格式如下: abstract class abstractClass{ /* 类定义体 */ } 抽象方法是指在返回值类型前加上abstract关键字,且没有方法体。格式如下: abstract返回值类型抽象方法名([形式参数列表]); 示例:参看例4.4 对于抽象类与抽象方法的限制 (1) 凡是用abstract 修饰符修饰的类被称为抽象类。凡是用abstract 修饰符修饰的成员方法被称为抽象方法; (2) 抽象类中可以有零个或多个抽象方法,也可以包含非抽象的方法; (3) 抽象类中可以没有抽象方法,但是,有抽象方法的类必须是抽象类; (4) 对于抽象方法来说,在抽象类中只指定其方法名及其类型,而不书写其实现代码; (5) 抽象类可以派生子类,

文档评论(0)

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

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

1亿VIP精品文档

相关文档