- 1、本文档共39页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第5章 继承、接口和泛型 ?本章导读 子类与父类 子类的继承性 子类对象的构造过程 成员变量隐藏和方法的重写 final类与final方法 对象的上转型对象 5.1 子类与父类 继承是一种由已有的类创建新类的机制。利用继承,我们可以先创建一个共有属性的一般类,根据该一般类再创建具有特殊属性的新类,新类继承一般类的状态和行为,并根据需要增加它自己的新的状态和行为。由继承而得到的类称为子类,被继承的类称为父类(超类)。 父类可以是自己编写的类也可以是java类库中的类。利用继承有利于实现代码的重复使用,子类只需要添加新的功能代码即可。Java不支持多重继承,即子类只能有一个父类。 5.2 子类的继承性 1.继承的定义 子类的成员中有一部分是子类自己声明定义的,另一部分是从它的父类继承的。 子类继承父类的成员变量作为自己的一个成员变量,就好像它们是在子类中直接声明一样,可以被子类中自己声明的任何实例方法操作。 子类继承父类的方法作为子类中的一个方法,就像它们是在子类中直接声明一样,可以被子类中自己声明的任何实例方法调用。 2. 子类和父类在同一包中的继承性 如果子类和父类在同一个包中,那么子类自然地继承了其父类中不是private的成员变量作为自己的成员变量,并且也自然地继承了父类中不是private的方法作为自己的方法。 继承的成员变量以及方法的访问权限保持不变。 下面的例5-1中(效果如图5.1所示),Son是Father的子类,而GrandSon是Son的子类,请注意子类的继承性。 3.子类和父类不在同一包中的继承性 如果子类和父类不在同一个包中,那么子类只能继承父类的protected、public成员变量和方法,继承的成员或方法的访问权限不变。 如果子类和父类不在同一个包里,子类不能继承父类的友好变量和友好方法。 5.3 子类对象的构造过程 当用子类的构造方法创建一个子类的对象时,子类的构造方法总是先调用父类的某个构造方法,如果子类的构造方法没有指明使用父类的哪个构造方法,子类就调用父类的不带参数的构造方法。因此,我们可以这样来理解子类创建的对象: ◆将子类中声明的成员变量作为子类对象的成员变量。 ◆父类的成员变量也都分配了内存空间,但只将其中一部分(继承的那部分)作为子类对象的成员变量。子类对象内存示意如图5.2所示。 例5-2中(效果如图5.3所示),子类调用继承的方法操作这些未被子类继承却分配了内存空间的变量。 子类对象内存示意如图5.2 5.4 成员变量的隐藏和方法的重写 1.成员变量的隐藏 子类可以隐藏继承的成员变量,当在子类中定义和父类中同名的成员变量时,子类就隐藏了继承的成员变量,即子类对象以及子类自己声明定义的方法操作与父类同名的成员变量。 例5-3中(效果如图5.4所示),在这个例子中子类隐藏了从父类继承的double型变量。 2.方法重写 子类也可以隐藏方法,子类通过方法重写来隐藏继承的方法。 方法重写是指:子类中定义一个方法,并且这个方法的名字、返回类型、参数个数和类型与从父类继承的方法完全相同。 子类通过方法的重写可以把父类的状态和行为改变为自身的状态和行为。这时,如果子类想使用被隐藏的方法,必须使用关键字super,我们将在后面讲述super的用法。 下面这个例子5-4可以帮助我们更好的理解方法的重写。效果如图5.5 需要注意的是:方法重写时一定要保证方法的名字、类型、参数个数和类型同父类的某个方法完全相同,只有这样,子类继承的这个方法才被隐藏。 如果子类在准备隐藏继承的方法时,参数个数或参数类型与父类的方法不尽相同,那实际上也没有隐藏继承的方法,这时子类就出现两个方法具有相同的名字 。但保证了参数的不同,也就是说子类出现了重载的方法,即有两个方法的名字相同,但参数不同。在下面的例子5-5中(效果如图5.6所示),子类并没有隐藏父类的方法f()。 例子5-4,例子5-5 效果图 3.访问修饰符protected的进一步说明 现在要对protected总结得更全面些。 如果用类D在D本身中创建了一个对象,那么该对象总是可以通过运算符“.”访问继承的或自己定义的protected变量和protected方法。如果在另外一个类中,如类Other,用类D创建了一个对象object,该对象通过“.”运算符访问protected变量和protected方法的权限如下所述 ◆ 子类D的protected成员变量和方法,如果不是从父类继承来的,object访问这些protected成员变量和方法时,只要类O
您可能关注的文档
- 第1单元列强的侵略与中国人民的抗争分解.ppt
- 第1讲_实_数分解.ppt
- 第1讲什么是纪录片分解.ppt
- 第1讲自然界的水循环和水资源的合理利用分解.ppt
- 第1节电能电功分解.ppt
- 第1课:从百草园到三味书屋分解.ppt
- 第1课_向人性扼杀者宣战分解.ppt
- 第1课甲午战争后民族危机的加深分解.ppt
- 第1课时公顷和平方千米分解.ppt
- 第1课向人性扼杀者宣战【】【北师大版】分解.ppt
- 海洋工程建筑与环境保护法规实施与合规性分析报告:2025年蓝色产业合规性分析报告.docx
- 虚拟现实与增强现实在传媒虚拟会议中的应用报告.docx
- 宠物殡葬服务市场2025年行业市场品牌建设与影响力分析报告.docx
- 智能质检新时代:2025年人工智能图像识别技术在工业领域的应用与精度优化策略.docx
- 音乐流媒体行业2025年版权运营与音乐版权保护法律框架创新研究报告.docx
- 2025年航空航天与国防科技行业市场潜力与风险控制策略报告.docx
- 2025年中医药现代化,中医药产业政策环境与法规完善策略报告.docx
- 新能源物流2025:多式联运信息共享平台建设与应用前景报告.docx
- 2025年人工智能在智慧政务服务流程再造中的智能化服务场景构建报告.docx
- 航空发动机制造高性能合金材料2025年应用与航空发动机燃烧室材料韧性性能提升报告.docx
文档评论(0)