- 1、本文档共82页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
05 java与对象2
第五章 类与对象2 --继承、多态和包 类的继承(inheritance) 客观世界中存在许多层次关系,类的继承反映了这种层次关系。 类的继承的特点 类继承也称为类派生,是指一个类可以继承其他类的非私有成员,实现代码复用。 被继承的类称为父类或超类,父类包括所有直接或间接被继承的类;继承父类或超类后产生的类称为派生类或子类。 Java语言以Object类作为所有类的父类,所有的类都是直接或间接地继承Object类得到的。 在Java语言中,只允许单继承。所谓单继承是指每个类只有一个父类,不允许有多个父类。但一个类允许同时拥有多个子类,这时这个父类实际上是所有子类的公共成员变量和公共方法成员的集合,而每一个子类则是父类的特殊化,是对公共成员变量和方法成员的功能、内涵方面的扩展和延伸。 Java语言的多继承可通过接口来实现。 类继承不改变成员的访问权限,父类中的成员为公有的或被保护的,则其子类的成员访问权限也继承为公有的或被保护的。 类继承的实现 在Java语言中,扩展和继承机制是通过类定义中的extends子句实现的,其格式如下: [修饰符] class 子类名 extends 直接超类名 { [成员变量定义...] [构造方法定义...] [初始化块...] [方法定义...] } extends子句指定了被扩展的类,称为当前定义类的直接超类,而当前定义类称为被扩展类的直接子类。通常把一个类A称为另一个类C的子类,是指满足下面条件之一者: 类A是类C的直接子类。 存在一个类B,类A是类B的子类,类B是类C的子类。 如果类A是类C的子类,那么类C称为是类A的超类。一个类不能把自己作为超类。 在类的定义中,如果缺省extends子句,则Object类被作为当前定义类的直接超类。在Java中,所有的类组成一个倒树型的层次结构,其中根是Object类。所以Object类是所有类的超类,而Object类本身没有超类。例如: class X { int x; } class Y extends X { int y; } class Z extends Y { int z; } 继承例子 1) class Example0501 2) { int x = 2; 3) private int y = x; 4) int m1() 5) { return x * y; } 7) } 9) class Example0501_1 extends Example0501 10){ int z = ( x + 1 ) * 5; 11) int m2() 12) { return m1() * z; } 14)} 16)class Test 17){ public static void main(String args[ ]) 18) { Example0501_1 o = new Example0501_1(); 19) System.out.println(Result of m2()=+o.m2()); 20) } 21)} 类成员 在定义类时,类体中除了可以包含变量与方法之外,还可以包含静态初始化块、实例初始化块和构造方法。其中变量和方法称为类的成员。类的成员可以通过类或类实例访问或调用,而静态初始化块、实例初始化块和构造方法只能在类装入或实例创建时由系统隐含调用。 一个类除了自己在类体中定义的成员之外,还能够从其直接超类和直接超接口中继承一些成员。具体来说,类类型包括以下成员: ● 在类体中定义的成员。 ● 从它的直接超接口继承的成员。 ● 从它的直接超类继承的成员。Object类没有直接超类,所以不存在继承的问题。 超类中声明为private的成员不会被子类继承。若超类和子类不在同一个包内,则超类中没有用protected、public修饰的成员不被会子类继承。 静态初始化块和构造方法都不是成员,因此也不会被继承。 从直接子类的角度来看,直接超类的成员可以被分为被子类继承和不被子类继承两大类。被子类继承的成员又可以被分为是在其类体中定义的和是从其超类中继承的两类。 is-a关系 is-a关系是特殊—一般关系的具体体现,即一个特殊类型的个体同样是一个一般类型的个体。 拿前面的X、Y和Z类为例,可以用下面代码说明is-a关系: Z o1 = new Z();//创建类Z的一个实例,并将对实例的引用值赋给类型为Z的变量o1 Y o2 = o1;//同样可以将实例的引用值赋给类型
您可能关注的文档
- 04)20172017学年第二学期形势与政策第一单元PPT.ppt
- 04,11,2 26章-抗CHF药.ppt
- 04-SPSS关分析和回归分析.ppt
- 04.地方应用高水平大学2016年度建设项目工作任务书(装备制造研究院).doc
- 04.认真贯彻劳动合同法》积极创建和谐劳动关系.ppt
- 04.运动与人行为和生活方式.ppt
- 0419颅内感性疾病的影像学诊断.ppt
- 04《供热工程第四课_室内供暖系统的水力计算.ppt
- 04合成高分子材屋面防水层分项工程质量技术交底卡分项工程.doc
- 04均值比教与检验.ppt
- 执业药师之《药事管理与法规》检测卷讲解含答案详解(最新).docx
- 执业药师之《药事管理与法规》全真模拟模拟题及答案详解(全国通用).docx
- 2025年执业药师之《西药学综合知识与技能》模拟试题附参考答案详解(突破训练).docx
- 2025年执业药师之《西药学综合知识与技能》考前冲刺模拟题库含答案详解(培优a卷).docx
- 2025年执业药师之《西药学综合知识与技能》真题精选附答案详解(名师推荐).docx
- 执业药师之《药事管理与法规》强化训练模考卷带答案详解.docx
- 2025年执业药师之《西药学综合知识与技能》考前冲刺测试卷包附参考答案详解(b卷).docx
- 2025年执业药师之《西药学综合知识与技能》模考模拟试题及参考答案详解(夺分金卷).docx
- 2025年执业药师之《西药学综合知识与技能》真题含答案详解【b卷】.docx
- 2025年执业药师之《西药学综合知识与技能》考前冲刺模拟题库带答案详解(b卷).docx
最近下载
- 钢琴课程学员服务协议7篇.docx VIP
- 数字化赋能职业教育高质量发展路径.pptx VIP
- 新公司法试题及答案.doc VIP
- 2025年高考化学专题复习冲刺练习 专题01 物质的组成、性质和分类(含解析).pdf VIP
- 过敏性休克应急预案及处理流程.pptx VIP
- 新人教版聋校沟通与交往二年级下册第四单元第十课《我爱姥姥姥爷》说课稿.docx VIP
- 新人教版聋校沟通与交往二年级下册第四单元第十二课《我给妈妈讲故事》说课稿.docx VIP
- GJB 438C-2021 军用软件开发文档通用要求 (高清,带章).docx VIP
- 《乙型病毒性肝炎全人群管理专家共识(2023)》解读课件.pptx VIP
- 25个作业女性化教程.docx VIP
文档评论(0)