- 1、本文档共85页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[理学]JavaI5类和对象继承多态性
类的继承和多态 4.8 类的继承 继承是一种由已有的类创建新类的机制。利用继承,我们可以先创建一个共有属性的一般类,根据该一般类再创建具有特殊属性的新类,新类继承一般类的状态和行为,并根据需要增加它自己的新的状态和行为。 由继承而得到的类称为子类,被继承的类称为父类(超类)。 Java不支持多重继承(子类只能有一个父类)。 1.子类 在类的声明中,通过使用关键字extends来创建一个类的子类,格式如下: class 子类名 extends 父类名 {… } 例如: class Students extends People {… } 2.子类的继承性 子类的成员中有一部分是子类自己声明定义的,另一部分是从它的父类继承的。 所谓子类继承父类的成员变量作为自己的一个成员变量,就好象它们是在子类中直接声明一样,可以被子类中自己声明的任何实例方法操作. 所谓子类继承父类的方法作为子类中的一个方法,就象它们是在子类中直接声明一样,可以被子类中自己声明的任何实例方法调用。 4.8.3 成员变量的隐藏 子类定义的成员变量和继承自父类的成员变量同名时,继承的成员变量被隐藏。 方法的覆盖(重写) 子类可以隐藏从父类继承过来的方法,即方法的重写。 在子类中定义一个与父类同名、返回类型、参数类型均相同一个方法,称为方法的覆盖。 覆盖发生在子类与父类之间。 子类可以通过方法的重写将父类的状态和行为改变为自身的状态和行为; 练习 特殊变量super 特殊变量super,提供了对父类的访问。 可以使用super访问父类被子类隐藏的变量或覆盖的方法。 每个子类构造方法的第一条语句,都是隐含地调用super(),如果父类没有这种形式的构造函数,那么在编译的时候就会报错。 再次讨论构造函数 首先明确一点: 子类一定会调用父类的构造方法 若父类没有定义构造函数,那么对父类数据的初始化将采用系统缺省的构造函数; 若父类定义有缺省构造函数,那么子类可根据自己的需要设置自己的构造函数; 若父类定义的构造函数都是有参的,那么子类构造函数必须通过super调用父类构造函数。 子类方法的调用 子类创建了一个对象 如果子类重写了父类的方法,那么子类调用方法就会运行重写的方法; 如果子类没有重写父类的方法,那么子类调用方法就会调用父类的方法; 如果子类重写了父类的方法,还希望调用到父类的方法,必须使用super关键字。 覆盖 VS 重载 方法的覆盖发生在父类和子类之间 子类中定义的方法和父类的方法: 函数原型完全相同; 函数实现一定不完全相同; 方法的重载可以出现在一个类中,也可以出现在父类与子类的继承关系中, 重载方法的原型一定不完全相同; 对象的上转型对象 假设B类是A类子类或间接子类,当我们用子类B创建一个对象,并把这个对象的引用放到A类的对象中时: A a; B b=new B(); a=b; 称这个A类对象:a,是子类对象b的上转型对象. 对象的上转型对象的实体是子类负责创建的,但上转型对象会失去原子类对象的一些属性和功能。 上转型对象 类型向上转换是安全的,因为这是从特殊类型到一般类型的转换。 进行向上类型转换时,出现的唯一问题是可能丢失子类中定义的方法和变量。 A a; a = new B(); A a; B b = new B(); a = b; 多态性 多态性就是指父类的某个方法被其子类重写时,可以各自产生自己的功能行为 . 当一个类有很多子类时,并且这些子类都重写了父类中的某个方法。那么当我们把子类创建的对象的引用放到一个父类的对象中时,就得到了该对象的一个上转型对象,那么这个上转的对象在调用这个方法时就可能具有多种形态. 通过覆盖父类的方法来实现,在运行时根据传递的对象引用,来调用相应的方法。 转型操作符的优先级低于点操作符,所以向下类型转换必须使用两组括号。 point p; circle c = new circle(1,1,1); p = c; ((circle)p).area(); 包(package) 为了便于管理大型软件系统中数目众多的类,解决类命名冲突的问题,Java引入了包(package)。 Java中的包与C++中的名字空间相似。在不同的包中可以有同名的类存在。 在Java中可以将自己写的类,按一定的方法归属于不同的子目录中(包)。 package语句告诉编译器当前类属于哪个包。 package语句必须是文件中的第一条语句。也就是说,在package语句之前,除了空白和注释之外不能有任何语句。 如果不加package语句,则指定为缺省包或无名包。 包对应着文件系统的目录层次结构。 在package语句中,用“.”来指明包(目录)的层次。 package语句 包名可以
您可能关注的文档
- [理学]C语言第4章最简单的C程序设计---顺序程序设计.ppt
- [理学]C语言第4章课件.ppt
- [理学]c语言精选和答案.doc
- [理学]D25-26偏微分方程理论与函数.ppt
- [理学]C课件-结构体数组做函数参数.ppt
- [理学]D9_4重积分的应用.ppt
- [理学]DFMEA讲义.ppt
- [理学]DreamWeaver最新课件.ppt
- [理学]DS02_线性表.ppt
- [理学]DSP程佩青版课件第2讲.ppt
- 2024年度党员干部民主生活会班子对照检查材料.docx
- 公司党委领导班子2024年度民主生活会对照检查材料4个带头方面.docx
- 市府办(政府办)领导班子2024年民主生活会会后综合情况报告.docx
- 在2025年市司法局信息宣传工作推进会上的讲话.docx
- 在2025年全省文化旅游高质量发展推进会上的讲话.docx
- 在2025年全区工业、住建大规模设备更新推进会上的讲话.docx
- 党支部2024年组织生活会民主评议党员情况总结报告_1.docx
- 2024年度组织生活会个人对照检查剖析材料.docx
- 镇党委书记2024年度民主生活会对照检查材料1.docx
- 党支部2024年组织生活会民主评议党员情况总结报告.docx
文档评论(0)