已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第十章,Java的继承与多态,Java中的继承,学习目标:继承的概念与实现;域的隐藏与方法的覆盖;编译时多态;运行时多态.,Java中的继承,前面已经讲完了抽象与封装,下面让我们进入面向对象的第二大基本特征继承的学习。继承是指一个子类通过extends关键字,包含了它父类的属性和方法。继承的格式:修饰符classAextendsB类体代码其中A是子类,B是父类。,继承,在java中,不支持多继承,也就是说,一个子类,只能继承一个父类。,父类,子类,父类1,父类2,子类,不过,可以利用接口,间接的实现多继承,继承,classRenpublicStringsizhi;publicStringpifu;publicvoidchi()System.out.println(我在吃饭!);classChinaextendsRenchina(Stringstr)pifu=str;System.out.println(中国人构造成功,皮肤是+pifu+的!);classTech3_5publicstaticvoidmain(Stringargs)Chinamy=newChina(黄色);my.sizhi=我也有四肢!;my.chi();,子类与父类的访问控制关系,父类中的public方法在子类中被继承为public;父类中的protected方法在子类中被继承为protected或private;父类中的friendly方法在子类中被继承为friendly;父类中的private的方法不被继承。,this和super关键字,this:表示对当前对象的引用,不过在静态(static)方法里是没有this的,因为静态数据是所有对象的共享数据区域,不属于任何一个对象。super:表示对直接父类对象的引用,可以直接用super.xxx或super.xxx()来调用父类的属性和方法。注意:this()和super()用在类的构造函数中时,必须是该函数的第一句代码。,域的隐藏与方法的覆盖,域的隐藏:子类重新定义了一个与父类那里继承来的域变量完全相同的变量,子类将使用它自己的重名变量,这称为域的隐藏。方法的覆盖:指子类重定义从父类继承来的一个同名方法,此时子类将清除父类方法的影响。子类可以通过重新定义与父类同名的方法,实现自身的行为。,方法的覆盖,注意:方法的覆盖也叫方法的重写,它是一种运行时多态。重写所需的条件如下:方法名相同;参数列表相同;返回类型相同;子类方法的访问控制符范围要大于或等于父类方法的范围;子类方法的异常范围不能超越父类被重写的方法的异常范围。,隐藏与覆盖举例,classParentinti=8;publicvoidshow()System.out.println(i);System.out.println(kkk);classTestHiddenextendsParentinti=9;publicvoidshow()System.out.println(i);System.out.println(this.i);System.out.println(super.i);System.out.println(newParent().i);System.out.println(lll);publicstaticvoidmain(Stringg)newTestHidden().show();,多态,面向对象程序设计的基本特征之三-多态的学习。多态分为两种类型:1、编译时多态;2、运行时多态。首先,我们来学习编译时多态,编译时多态指的是方法的重载(overload)。,编译时多态-方法的重载,方法的重载:通过定义同一类中的多个同名的不同方法来实现的;编译时则根据参数(个数、类型、顺序)的不同来区分不同的方法。重载的条件:方法名相同;参数列表必须有所区别;注意:返回类型不必相同。,编译时多态,classJuxing_2intzouchang;intmianji;Stringstr;Juxing_2()System.out.println(我是无参数的初始化!);Juxing_2(inta)zouchang=a;System.out.println(我是有参数的初始化!);Juxing_2(inta,intb)zouchang=a;mianji=b;System.out.println(我是参数个数不同的初始化!);Juxing_2(Stringa)str=a;System.out.println(我是参数类型不同的初始化!);classTech3_3publicstaticvoidmain(Stringargs)Juxing_2my1=newJuxing_2();Juxing_2my2=newJuxing_2(5);Juxing_2my3=newJuxing_2(5,10);Juxing_2my4=newJuxing_2(你好!重载构造函数!);,练习,编写一个带有TestOverload()函数的类,其中这个函数是个重载函数,通过给这个函数传入的参数个数或类型不同来加以区分,这个函数要完成的功能是,把传入的参数都打印出来,并说明自己被调用了。,练习,classTestOverloadpublicTestOverload()System.out.println(我是无参数的TestOverload()!);publicTestOverload(inta)System.out.println(a);System.out.println(我是有一个参数的TestOverload()!);publicTestOverload(inta,intb)System.out.println(a);System.out.println(b);System.out.println(我是有二个参数的TestOverload()!);publicTestOverload(Stringa)System.out.println(a);System.out.println(我是参数类型不同的TestOverload()!);classTech3_4publicstaticvoidmain(Stringargs)newTestOverload();newTestOverload(5);newTestOverload(5,10);newTestOverload(重载函数一点都不难.);,运行时多态,运行时多态:子类对象作为父类对象来使用。父类obj=new子类();注意:一个引用类型变量如果声明为父类的类型,但实际引用的是子类对象,那么该变量就不能再访问子类中添加的属性和方法。,例子,classRenpublicvoidchi()System.out.println(所有的人类在吃饭!);classChinaextendsRenpublicvoidchi()System
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 毕业论文考核小组评语(标准版)
- 我国新能源汽车企业战略成本管理应用研究
- 广西新课程教研联盟2025-2025学年高三上学期11月联考试题 地理含答案
- 工程监理合同工作总结(3篇)
- 科学文献检索报告
- 工程合同未约定支付方式(3篇)
- 复旦大学本科生毕业论文格式
- 上海财经大学研究生学位论文写作规范
- 博士学位论文导师评语范文
- 2025年学前教育论文指导教师评语(共4)
- HSF技术标准解析
- 保障农民工工资支付协调机制和工资预防机制
- 健康照护师-国家职业技能标准
- 港口幼儿园观察记录表
- (9.5.1)-10.5失血性休克病理生理学
- 高考3500词无中文无音标清晰版自测
- GB/T 2423.1-2008电工电子产品环境试验第2部分:试验方法试验A:低温
- 大学生理学呼吸系统课件
- 通用野外样方调查表
- 不稳定型心绞痛教学查房共37张课件
- 东北师范大学学校抬头信纸
评论
0/150
提交评论