电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本
换一换
首页 金锄头文库 > 资源分类 > PPT文档下载
分享到微信 分享到微博 分享到QQ空间

利用已有成果继承与多态

  • 资源ID:48813341       资源大小:725.64KB        全文页数:58页
  • 资源格式: PPT        下载积分:10金贝
快捷下载 游客一键下载
账号登录下载
微信登录下载
三方登录下载: 微信开放平台登录   支付宝登录   QQ登录  
二维码
微信扫一扫登录
下载资源需要10金贝
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
1、金锄头文库是“C2C”交易模式,即卖家上传的文档直接由买家下载,本站只是中间服务平台,本站所有文档下载所得的收益全部归上传人(卖家)所有,作为网络服务商,若您的权利被侵害请及时联系右侧客服;
2、如你看到网页展示的文档有jinchutou.com水印,是因预览和防盗链等技术需要对部份页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有jinchutou.com水印标识,下载后原文更清晰;
3、所有的PPT和DOC文档都被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;下载前须认真查看,确认无误后再购买;
4、文档大部份都是可以预览的,金锄头文库作为内容存储提供商,无法对各卖家所售文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;
5、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据;
6、如果您还有什么不清楚的或需要我们协助,可以点击右侧栏的客服。
下载须知 | 常见问题汇总

利用已有成果继承与多态

第5章 利用已有成果:继承与多态n思考:在编写大型应用程序的时候,如果所定义的 类已经被使用,应如何提高程序的可维护性?既要 保证程序修改后不影响使用,又要对程序的功能不 断扩充。1、直接改动源代码,使之实现新的功能 2、复制原有代码,对复制的代码进行改动5.1继承n由此产生的一些问题:一、修改过程中很容易产生一些新的错误,导致原有 程序运行不正确; 二、复制代码的时候可能产生错误,而且使程序的 可移植性和重用性变差。5.1继承n1.继承概念的提出面向对象的方法与人类的思维方法相似,对象就是 对事物特点的必要抽象。人在认识事物的时候也经 过抽象,并且抽象是分层次的。在程序中定义类的时候,如果发现它的某些成员 (变量及方法)已经在另一个类中定义过了, 如果再定义就显得累赘。5.1继承n2.继承的要点n新类必须在已有类的基础上构造。n在已有类的基础上构造新类的过程称为派生。n派生出的新类称为已有类的子类。已有类称为超类 (父类)。n子类继承父类的方法和属性。父类子类继承 extends5.1继承n3.继承的特点n继承是一种由已有的类创建新类的机制,是面向对 象程序设计的基石之一。n继承体现了软件的复用,子类继承父类: v 父类中的属性不需要再定义。 v父类中的方法不需要再重新编写 。n子类继承父类的非私有属性和方法,还可以定义新 的属性和方法,改写父类的方法。 v 子类是在父类的基础上,做一些个性化的定义。nJava中每个类都有父类。隐含为java.lang包中的 Object类。5.1继承5.1继承关于改写父类方法与子类个性化定义能继承?不能 继承?类的继承树学生小学生中学生大学生研究生本科生在“学生“类中定义好各类 学生共性的内容,各子类 中只需定义自己特有的内 容。 父类“学生“类实际上是对 各类学生的概括和抽象。类的继承树图形三维图形二维图形园形三角形矩形正方形圆锥体球体立方体各种电话卡类及其间的继承关系n4.继承的定义nJava中通过关键字extends来定义两个类之间的继 承关系,extends后面是父类,前面是新定义的子 类:n modifier class className extends superClass5.1继承n实例:n public class Automobile extends Vehicle n / Vehicle是父类, Automobile是子类n注意:子类、父类的关系是相对而言的!如:npublic class Car extends Automobile n/ Automobile是父类, Car是子类5.1继承n继承有什么作用?n(1)继承能够使子类拥有父类的非私有属性和方 法,而不需在子类重新定义。n(2)子类既可以保持原有的属性和方法,也可以 对从父类那里继承的属性和方法进行修改。5.1继承代码实例nVehicle类: n public class Vehicle n String color = “white”; n protected float speed; n public void accelerate(). n nAutomobile类 n public class Automobile extends Vehicle n float fuelConsum; n public void decelerate()speed = speed 10; nnVehicle类与Automobile类的属性及方法:方法: accelerate()属性: color speedVehicle类方法: accelerate() decelerate()属性: color speed fuelConsumAutomobile类5.1继承nCar类:npublic class Car extends Automobilen private int price;n public void decelerate()n speed = speed 20; n 5.1继承方法: accelerate()属性: color speedVehicle类方法: accelerate() decelerate()属性: color speed fuelConsumAutomobile类方法: accelerate() decelerate()属性: color speed fuelConsum priceCar类Vehicle类、Automobile类及Car类的属性及方法:5.1继承n采用继承的方式来组织设计类,可以使程序结构更 清晰并降低编码和维护的工作量。5.2继承的使用不就多写几行 代码嘛,弄个 啥继承?/example1 class ClassAint doThis()int doThat() n假设现在要设计一个类ClassB,其中需要有ClassA 里的doThis(), doThat(),怎么办?/example2 class ClassB classA a = new ClassA();int doThis() return a.doThis(); int doThat() return a.doThis(); 5.2继承的使用/example1 class ClassAint doThis()int doThat() 5.2.1 属性和方法的继承n1. 属性的继承 (1)子类可以继承父类的所有非私有属性/example1 class PersonString name;int age; /example1 class StudentString name;int age;String dept; 1. 属性的继承n两个类有大量重复定义,可以怎么更改?/example2 class PersonString name;int age; class Student extends PersonString dept; n(2)属性的覆盖:子类可重新定义父类的非私有 属性1. 属性的继承注意:1.子类此时将有两个同名属性,一个是继承自父类的, 一个是自定义的 2.当子类执行继承自父类的方法时,处理的是继承自父类的属性 3.当子类执行自定义的方法时,处理的是自定义的属性 4.可以使用关键字super来实现父类属性的直接应用1. 属性的继承之属性的覆盖 public class Fatherint a = 100;public void miner() a-; public static void main(String args)Father x = new Father();Son y = new Son();System.out.println(“a of son is:“ + y.a);System.out.println(“a of son's super is:“ + y.getA();y.miner();System.out.println(“a of son is :“ + y.a);System.out.println(“a of son's super is:“ + y.getA(); class Son extends Fatherint a = 1;public void plus() a+; public int getA() return super.a; 1. 属性的继承之属性的覆盖n2. 方法的继承n方法的继承规则与属性类似,主要有如下几点: 1)子类可继承父类的所有非私有方法; 2)不能继承父类的构造方法; 3)如果子类方法与父类方法同名(不同参),则子 类重载父类方法; 4)如果子类方法与父类方法同名同参,则子类覆盖 (重写)父类方法,若要引用父类的方法,用关键 字super; 5)覆盖方法不能使用比被覆盖方法更严格的访问权 限。5.2.1 属性和方法的继承n方法的重载与覆盖有何区别?1)覆盖是子类和父类间的关系,重载是同一类内部 多个方法的关系; 2)覆盖一般是两个方法间,而重载可能是多个方法 间; 3)覆盖的方法有相同方法名和形参表,而重载仅方 法名相同; 4)覆盖时区分方法的是调用它的对象,而重载根据 形参表决定调用哪个方法。2. 方法的继承之重载与覆盖class PersonString name;int age; void set(String s,int i) name = s;age = i; public void print() System.out.println(name+“,“+age); 2. 方法的继承例2. 方法的继承例public class Student extends Personprotected String dept; public static void main(String args) Person p = new Person();p.set(“Richard“, 23);p.print();Student s = new Student();s.set(“Drodan“, 34);s.dept = “computer“;s.print(); n注意:由final修饰的方法是不能被子类覆盖的,只 能被重载!2. 方法的继承之finalclass Father public final void mathod()System.out.print(“the father's mathod“); class Son extends Fatherpublic void mathod(int i)/如果没有形参i,就和 /父类方法相同 super.mathod(); System.out.println(“the son's mathod“+i); 2. 方法的继承之finaln构造函数的作用?定义对象的初始状态! nJAVA的几种初始化机制 1)默认变量初始化 如果没有明确为某个变量赋值,那么系统会自动赋值 :数字0;布尔型false;引用型null; 2)默认构造函数public Employee()name=“”; salary=0;2. 方法的继承之构造函数3)显式变量初始化private String name = “lili”; /显式初始化4)带参数构造函数 public Employee(String n,double s)name = n;salary = s;2. 方法的继承之构造函数当所有构造函数都需要把某 一变量都赋于相同值时5)构造函数里调用本类已定义构造函数2. 方法的继承之构造函数class PersonString name;int age;Person(String n) name = n; Person(String n,int a) this(n); /调用第一个构造函数age = a; 6)子类构造函数里调用父类定义的构造函数2. 方法的继承之构造函数class Student extends Personint sid; Student(String n,int a,int id)super(n,a); /必须是第一条语句sid = id; n子类并不继承父类的构造函数,但子类构造函数与 父类构造函数存在如下原则: 1)如果子类没有定义任何构造函数,那么在创建子 类对象时将

注意事项

本文(利用已有成果继承与多态)为本站会员(宝路)主动上传,金锄头文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即阅读金锄头文库的“版权提示”【网址:https://www.jinchutou.com/h-59.html】,按提示上传提交保证函及证明材料,经审查核实后我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.