




已阅读5页,还剩19页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第四章面向对象编程,本章主要内容,4.1简介4.2面向对象的基本概念4.3面向对象的基本语法4.4类和包4.5类的方法4.6对象4.7继承和多态4.8接口和抽象类4.9面向对象开发概念,定义类的方法的步骤是什么?类中的一个方法如何调用类的另一个方法?类中的一个方法如何调用另一个类的方法?分别说明成员变量和局部变量的作用域。如何给类的方法添加JavaDoc注释?,课程回顾,本章目标,掌握继承掌握super关键字掌握多态,4.6继承和多态,计算机语言设计犹如在公园里漫步。我是说侏罗纪公园。LarryWall(Perl语言之父),生活中的继承,生活中,继承的例子随处可见,动物,食草动物,食肉动物,谁是父类?谁是子类?能说出继承的特点吗?,继承需要符合的关系:is-a,父类更通用、子类更具体,生活中的继承,子类具有父类的一般特性(包括属性和行为),以及自身特殊的特性,巴士是汽车吗?卡车是汽车吗?出租车是汽车吗?,汽车,请问:出租车包含哪些属性和行为呢?,4.6.1类和类的继承,类的设计其实是对现有世界的模仿在继承中,一般常见的有属性继承,属性隐藏,方法继承,方法覆盖,方法重载等技术。在Java语言中,用extends关键字来表示一个类继承了另一个类在父类中只定义一些通用的属性与方法子类自动继承父类的属性和方法,子类中可以定义特定的属性和方法子类的构造方法中,通过super关键字调用父类的构造方法方法重写后,通过super关键字调用父类的方法在Java中,所有的Java类都直接或间接地继承了java.lang.Object类,如何实现继承3-1,在Java语言中,用extends关键字来表示一个类继承了另一个类,例如:,publicclassWomanextendsHuman/其余代码省略,在父类中只定义一些通用的属性与方法,例如:,publicclassHumanprivateStringname;privateStringschool;publicHuman(Stringname,Stringsex,intage)/初始化属性值publicvoidcanEat()publicvoidbreath(),如何实现继承3-2,子类自动继承父类的属性和方法,子类中可以定义特定的属性和方法,publicclassHumanprivateStringname;/教员姓名privateStringsex;/所在中心publicHuman(StringmyName,StringmySex)/初始化属性值publicvoidsayHello()/方法的具体实现,publicclassFatherextendsHumanpublicFather(StringmyName,StringmySex)super(myName,mySex);publicvoidsayHello()System.out.println(“你好,我是爸爸);super.sayHello();,由于sayHello()方法与父类的实现有所不同,因此重写了该方法,方法重写:子类和父类的方法具有相同的名称、参数列表、返回类型,父类中的属性和方法可以被子类继承,publicclassFatherextendsHumanpublicFather(StringmyName,StringmySex)super(myName,mySex);,如何实现继承3-3,子类的构造方法中,通过super关键字调用父类的构造方法,方法重写后,通过super关键字调用父类的方法,publicclassFatherextendsHumanpublicvoidsayHello()System.out.println(“你好,我是爸爸);super.sayHello();,通过调用父类的构造方法,完成对属性值的初始化,一切类的“祖先”Object,在Java中,所有的Java类都直接或间接地继承了java.lang.Object类,publicclassMyObject/,publicclassMyObectextendsObject/,在Eclipse中调用MyObject对象的成员,会自动弹出继承自Object的所有方法,4.6.1类和类的继承,函数的覆盖和重载的区别,4.6.1类和类的继承,重载的情况下,子类的访问权限比父类要大。参看课本例4.15Man类:用于测试Man类的程序:,为什么需要多态5-1,在Woman/Man类的基础上,开发一个类用来判断,负责对Woman、Man中的方法进行判断:1、打招呼,为什么需要多态5-2,第一种解决方案,publicclassJudgepublicvoidjudge(Manman)man.sayHello();man.isFather();publicvoidjudge(Womanwoman)woman.sayHello();woman.isMother();publicstaticvoidmain(Stringargs)Manlisi=newMan(李四,男);Womanlili=newWoman(李丽,女);Judgejudge=newJudge();judge.judge(lisi);judge.judge(lili);,我继承于Human类,是个男性大家好,我是李四,是个男人我继承于Human类,是个女性大家好,我是李丽,是个女人,控制台输出,为什么需要多态5-3,现在,升级人类,增加一种新类型:Boy同时,Judge也负责对这类进行评估,为什么需要多态5-4,如果在第一种解决方案的基础上去解决,我们需要如下两个步骤:建立Boy类修改Judge类,增加方法:judge(Boyboy),每增加一种新的人类型,都要修Judge类,增加相应的judge(评估)方法,代码的可扩展性及可维护性极差,能找到这个解决方案的弊端吗?,为什么需要多态5-5,第二种解决方案使用多态,publicclassJudgeAllpublicvoidjudge(Humanhuman)human.sayHello();publicstaticvoidmain(Stringargs)JudgeAlljudgeall=newJudgeAll();judgeall.judge(lisi);judgeall.judge(lili);judgeall.judge(xiaoming);,可以接收子类类型,根据实际创建的对象类型调用相应方法,我继承于Human类,是个男性大家好,我是李四,是个男人我继承于Human类,是个女性大家好,我是李丽,是个女人我继承于Human类,是个男孩,还没有成年,控制台输出,使用多态之后,当需要增加新的子类类型时,无需更改Judge类,程序的可扩展性及可维护性增强,什么是多态,简单来说,多态是具有表现多种形态的能力的特征同一个实现接口,使用不同的实例而执行不同操作,彩色打印机,打印机,黑白打印机,打印效果:彩色,打印效果:黑白,打印,打印,publicclassHumanpublicvoidsayHello()System.out.println(大家好,我是+name+,是个+sex+人);,如何实现多态,1、子类重写父类的方法2、编写方法时,使用父类定义的方法3、运行时,根据实际创建的对象类型动态决定使用哪个方法,总结2-1,给定如下Java代码,编译运行后,输出结果是什么?,classBasepublicStringname;publicBase()name=Base;publicBase(StringpName)name=pName;publicvoidmethod()System.out.println(name);,classChildextendsBasepublicChild()super(Child1);name=Child2;,publicclassSamplepublicstaticvoidmain(Stringargs)Childc=newChild();c.method();,Child2,控制台输出,1,2,3,总结2-2,给定如下Java代码,编译运行后,输出结果是什么?,publicclassHumanpublicvoidsayHello()System.out.println(“你好,我是人类);,publicclassBoyextendsHumanpublicvoidsayHello()System.out.println(“你好,我是男孩);,1,2,publicclassTestpublicstaticvoidmain(Stringargs)Humant=newBoy();t.sayHello();,控制台输出,你好,我是男孩,4.6.2类的运行时多态,当不同的对象接受到相同的消息名(或者说当不同的对象调用相同的名称的成员函数)时,可能引起不同的行为(执行不同的的代
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 钽铌分离工岗位操作规程考核试卷及答案
- 教师招聘之《小学教师招聘》复习试题及答案详解(夺冠)
- 菌物标本采集制作工三级安全教育(车间级)考核试卷及答案
- 钽铌分离工理念考核试卷及答案
- 粉矿烧结工上岗考核试卷及答案
- 煤气化备配煤工突发故障应对考核试卷及答案
- 矿井通风工成本预算考核试卷及答案
- 选矿脱水工内部技能考核试卷及答案
- 酶制剂充填封装工效率提升考核试卷及答案
- 教育宣传考试题及答案
- 滑板项目选材指标与标准
- 额窦手术课件
- 智慧养猪解决方案演示课件
- 最新中医骨伤科学考试题库及答案
- 产品形态设计课件完整
- 德国巴斯夫抗氧剂和紫外线吸收剂
- SG-A088接地装置安装工程工检验批质量验收记录
- 《芯片原理与技术》课件微流控芯片
- 混凝土外观质量缺陷及治理措施PPT课件
- 十四条经络养生课件
- 麻醉医师资格分级授权管理能力评价与再授权制及程序培训考核试题及答案
评论
0/150
提交评论