欢迎来到天天文库
浏览记录
ID:45974658
大小:725.50 KB
页数:58页
时间:2019-11-19
《利用已有成果继承与多态》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第5章利用已有成果:继承与多态思考:在编写大型应用程序的时候,如果所定义的类已经被使用,应如何提高程序的可维护性?既要保证程序修改后不影响使用,又要对程序的功能不断扩充。1、直接改动源代码,使之实现新的功能2、复制原有代码,对复制的代码进行改动5.1继承由此产生的一些问题:一、修改过程中很容易产生一些新的错误,导致原有程序运行不正确;二、复制代码的时候可能产生错误,而且使程序的可移植性和重用性变差。5.1继承1.继承概念的提出面向对象的方法与人类的思维方法相似,对象就是对事物特点的必要抽象。人在认识事物的时候也经过抽象,并且抽象是分层次的。在程序中定义类的时候,如果发现它的某些成员(
2、变量及方法)已经在另一个类中定义过了,如果再定义就显得累赘。5.1继承2.继承的要点新类必须在已有类的基础上构造。在已有类的基础上构造新类的过程称为派生。派生出的新类称为已有类的子类。已有类称为超类(父类)。子类继承父类的方法和属性。父类子类继承extends5.1继承3.继承的特点继承是一种由已有的类创建新类的机制,是面向对象程序设计的基石之一。继承体现了软件的复用,子类继承父类:父类中的属性不需要再定义。父类中的方法不需要再重新编写。子类继承父类的非私有属性和方法,还可以定义新的属性和方法,改写父类的方法。子类是在父类的基础上,做一些个性化的定义。Java中每个类都有父类。隐含为
3、java.lang包中的Object类。5.1继承5.1继承关于改写父类方法与子类个性化定义能继承?不能继承?类的继承树学生小学生中学生大学生研究生本科生在"学生"类中定义好各类学生共性的内容,各子类中只需定义自己特有的内容。父类"学生"类实际上是对各类学生的概括和抽象。类的继承树图形三维图形二维图形园形三角形矩形正方形圆锥体球体立方体各种电话卡类及其间的继承关系4.继承的定义Java中通过关键字extends来定义两个类之间的继承关系,extends后面是父类,前面是新定义的子类:[modifier]classclassName[extendssuperClass]5.1继承实例:
4、publicclassAutomobileextendsVehicle{}//Vehicle是父类,Automobile是子类注意:子类、父类的关系是相对而言的!如:publicclassCarextendsAutomobile{}//Automobile是父类,Car是子类5.1继承继承有什么作用?(1)继承能够使子类拥有父类的非私有属性和方法,而不需在子类重新定义。(2)子类既可以保持原有的属性和方法,也可以对从父类那里继承的属性和方法进行修改。5.1继承代码实例Vehicle类:publicclassVehicle{Stringcolor=“white”;protectedfl
5、oatspeed;publicvoidaccelerate(){….}}Automobile类publicclassAutomobileextendsVehicle{floatfuelConsum;publicvoiddecelerate(){speed=speed–10;}}Vehicle类与Automobile类的属性及方法:方法:accelerate()属性:colorspeedVehicle类方法:accelerate()decelerate()属性:colorspeedfuelConsumAutomobile类5.1继承Car类:publicclassCarextendsA
6、utomobile{privateintprice;publicvoiddecelerate(){speed=speed–20;}}5.1继承方法:accelerate()属性:colorspeedVehicle类方法:accelerate()decelerate()属性:colorspeedfuelConsumAutomobile类方法:accelerate()decelerate()属性:colorspeedfuelConsumpriceCar类Vehicle类、Automobile类及Car类的属性及方法:5.1继承采用继承的方式来组织设计类,可以使程序结构更清晰并降低编码和维
7、护的工作量。5.2继承的使用不就多写几行代码嘛,弄个啥继承?//example1classClassA{intdoThis(){………}intdoThat(){………}}假设现在要设计一个类ClassB,其中需要有ClassA里的doThis(),doThat(),怎么办?//example2classClassB{classAa=newClassA();intdoThis(){returna.doThis();}intdoThat(){returna.d
此文档下载收益归作者所有