Java面向对象二-继承 多态和接口.ppt

  1. 1、本文档共44页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Java面向对象二-继承 多态和接口

继承、多态与接口 6.1 继承和多态的概念 继承与多态是一对彼此相关的概念,可以说多态是一种特殊的继承关系,它们都是面向对象方法中的重要概念和技术。 6.1.1 继承的概念 1. 概念的提出 通过必要的说明能够实现某个类无需重新定义就拥有另一个类的某些属性和方法,并把这种关系称为继承,先定义的类称父类,后定义的类称子类。 例:我们用车这个类可以引出机动车和非机动车两个子类,这两个子类又有自己的子类,这样一层一层细分,就形成如图所示的继承结构。 2. 继承的定义 Java中通过关键字extends来定义两个类之间的继承关系 ,extends后面的是父类,新定义的是子类。 例如: public class Automobile extends Vehicle{} //Vehicle是父类,Automobile是子类 继承能够使子类拥有父类的非私有属性和方法,而不需要在子类的类定义时重新定义父类的这些属性和方法。 子类既可以保持父类原有的属性和方法,也可以对从父类那里继承而来的属性和方法进行修改 。 例:我们对Vehicle选取了以下内容进行定义: public class Vehicle { String clocor=”white”; //颜色属性 protected float speed; //速度属性 public void accelerate() { //加速方法 … } } 我们对automobile进行如下简单的定义,那就含有了Vehicle的所有的方法和属性,并且还增加了一个燃油率的属性和一个减速方法。 public class Automobile extends Vehicle { float fuelConsumption; public void decelerate() { … } } 这时Automobile含有的属性和方法如下: String clocor=”white”; protected float speed; float fuelConsumption; public void accelerate(){ … } public void decelerate(){ speed=speed-10.f ; } 再定义Automobile的子类Car,它会继承以上所有内容 public class Car extends Automobile { private int price; public void decelerate() { speed=speed-20.f ; } } 6.1.2 多态的概念 多态是指在一棵继承树中的类中可以有多个同名但不同方法体以及不同形参的方法。 重写Overwrite是在子类中直接定义和父类同样的属性和方法,但重新编写了方法体,即子类与父类方法的形参与返回值都相同,而内部处理不同,这种方法在使用过程中,Java虚拟机会根据调用这个方法的类来确定哪个方法被调用。 多态例子 class A { public void func1() { System.out.println(A func1 is calling); } public void func2() { func1(); } } class B extends A { public void func1() { System.out.println(B func1 is calling); } public void func3() { System.out.println(B func3 is calling); } } 多态例子 class C { public static void main(String [] args) { B b=new B(); A a = b; callA(a); callA(new B()); } public static void callA(A a) { a.func1(); a.func2(); } } Instance of操作符 使用instance of判断是否一个类实现了某个接口或者一个实例对象是否属于一个类 Public static void CallA(A a) { if(a instance of B) { B b=(B)a; b.func1(); b.func2();

文档评论(0)

gooddoc + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档