- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
继承、多态 继承、 多态 * 继承、多态 * 面向对象的特性--继承 继承的概念 实现继承(超类和子类) 多态 动态绑定 * 继承、多态 * 面向对象的特性--继承 通过继承实现代码复用。继承而得到的类称为子类,被继承的类称为父类。子类可以重写父类的方法,及命名与父类同名的成员变量。 Java中所有的类都是通过直接或间接地继承java.lang.Object类得到的。 Java不支持多重继承,即一个类从多个超类派生的能力。 * 继承、多态 * 继承关系 * 继承、多态 * 超类(Car.java) 运用继承,你能够创建一个通用超类,它定义了一系列相关项目的一般特性。 将各类汽车的公共属性和方法都纳入Car类中 公共属性:排气量、最高时速、当前时速等 公共方法:启动、加速等 * 继承、多态 * 子类(Porsche2.java ) 子类是超类的扩展版本,它继承了超类定义的所有实例变量和方法,并且为它自己增添了独特的元素,如: Porsche2扩展Car类,增加了Porsche2特定属性:涡轮 、 二氧化碳 public class Porsche2 extends Car { // add attributes private int turbos = 2; rivate boolean nos; …… * 继承、多态 * 方法重写(Porsche2.java ) 子类通过隐藏父类的成员变量和重写父类的方法,可以把父类的状态和行为改变为自身的状态和行为。 Porsche2重写了Car中的accelerate 、 decelerate 方法,其将会覆盖Car中相同签名方法 * 继承、多态 * 方法重写原则 ◇ 方法重写时应遵循的原则: 1)改写后的方法不能比被重写的方法有更严格的访问权限(可以相同)。 2)改写后的方法不能比重写的方法产生更多的例外(异常)。 * 继承、多态 * super关键字 super与this类似,this变量引用类实例,super则引用超类实例,可以用super引用超类的方法和变量,super方法则引用超类的构造方法 子类通过super方法决定调用超类的那个构造方法 public Porsche2() { super( Porsche, 450, 220, 2, Yellow, 15, 5, Car.TIPTRONIC ); ……. } * 继承、多态 * super关键字 如果子类构造方法中既未显式调用父类构造方法,而父类中又没有默认的构造方法,则编译出错。 super方法只能用于构造方法的第一条语句(思考:为什么?) super 与 this区别 super() /this() 构造函数 super.MethodName() this.MethodName() 调用方法 Super.PropertyName this. PropertyName 调用属性 This可以作为参数传入,super则不可以 class A{ protected int i = 0;} class B extends A{ public void Add(A a){ for(int i = 0;i10;i++){ a.i++; System.out.println(a.i); } } public void Add(){ Add(this); //this 作为一个对象传入,允许 //Add(super); //不允许 } public static void main(String argc[]){ B b = new B(); b.Add(); }} * 继承、多态 * final 关键字 final 关键字可以修饰类、类的成员变量,变量,和成员方法,但final 的作用不同。 1) final 修饰成员变量则成为实例常量(上一章) 2) final 修饰成员方法则该方法不能被子类重写 3) final修饰类,则类不能被继承 * 继承、多态 * 面向对象的特性—多态 子类的对象可以替代父类的对象使用 一个超类变量可以实际引用不同子类的对象 Car myCar; myCar=new Porsche2(); * 继承、多态 * 多态 引用子类对象的超类变量不能再访问子类中添加的属性和方法 Car myCar=new Porsche2(); myCar. engageTurbos() ;//Error 但可以访问超类中声明被子类覆盖(重写)的方法! myCar. accelerate () ; //提问? myCar. accelerate()执行的哪个方法?为什么 *
原创力文档


文档评论(0)