




已阅读5页,还剩18页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第7章继承和多态,类的继承类继承的过程的讨论抽象类和接口多态instanceof操作符,7.1类与类之间的关系,is-a:继承;has-a:聚合,A的对象包含B的对象;use-a:依赖,一个类的方法操作了另一个类的对象。,7.2继承,继承就是在现有类的基础上构建新的类,继承现有类时,就重用(继承)了那个类的方法和属性,同时可向新类中增加自己的方法和属性。注意:父类的私有方法及构造方法子类不能能继承,不能使用;声明为final的类不能被继承。,类Animal,classAnimalprivateintage;privateintweight;publicAnimal()publicAnimal(intage,intweight)this.age=age;this.weight=weight;publicintgetAge()returnage;publicintgetWeight()returnweight;publicvoidsleep()System.out.println(“Animalsleep”);publicvoidbreathe()System.out.println(“Animalbreathe”);,7.2.1定义子类的成员变量,子类中,成员变量的定义可能有三种情况:完全继承父类的;与父类同名的成员变量;子类特有的成员变量;与父类同名的成员变量用的少,一般直接继承就可以了。不建议用,classFishextendsAnimalprivateStringscale;,7.2.2定义子类的构造方法,super的含义:是指超类;它和this一样有两种用法:点操作:访问超类成员:super.say();调用超类构造器:super();初始化超类;super用于调用超类构造器的用法,只能在构造器中,且只能放在第一行,这时它与this()不能同时出现;定义子类对象时会先初始化超类;如果子类构造器不显示调用超类构造器,编译器会自动调用超类的无参构造器。,类Fish的构造方法,classFishextendsAnimalprotectedStringscale;publicFish()super();publicFish(Stringscale)super(1,1);this.scale=scale;publicFish(intage,intweight,Stringscale)this.age=age;this.weight=weight;this.scale=scale;,7.2.3定义子类的成员方法,子类的方法体中,成员方法的定义可能出现两种情况:子类特有的方法;子类继承父类的方法。方法的覆盖:子类和父类的方法之间:1、返回值类型相同;2、方法名相同;3、形参类型、个数、顺序相同;4、子类中方法的权限不小于父类中的权限;5、子类方法不能抛出新异常。注意:与方法重载的区别;方法覆盖特别严格,违反任意一条都不行;违反第3条时构成重载;声明为final的方法不能被覆盖。,类Fish的成员方法,classFishextendsAnimalpublicStringgetScale()returnscale;publicvoidswimming()System.out.println(“Fishswimming”);publicvoidsleep()System.out.println(“Fishsleep”);publicvoidbreathe()System.out.println(“Fishbreathe”);,7.2.4继承的过程,吸收父类成员全部继承父类除了私有成员和构造方法之外的成员改造父类成员多指方法重写添加新成员添加父类不具备的成员,也称对父类的扩展,思考,classSuperpublicfloatgetNum()return3.0f;publicclassSubextendsSuper/插入下列哪个方法会编译错误?a)publicfloatgetNum()return4.0f;b)publicvoidgetNum()c)publicvoidgetNum(doubled)d)publicdoublegetNum(floatd)return4.0d下列哪些方法是对父类中方法:protectedfloatgetVar()returnx;的有效覆盖?(x为定义了的float型成员变量)a)floatgetVar()returnx;b)publicfloatgetVar()returnx;c)doublegetVar()returnx;d)protectedfloatgetVar()returnx+1;e)publicfloatgetVar(floatf)returnf;,7.3抽象类,从某种角度来说,祖先类更通用,这样我们就把它用作派生其他类的基础,而非具有需要使用的特定实例的类;抽象方法:只有方法声明,而没有方法实现的方法,以分号结束;抽象类不能实例化对象;抽象方法和抽象类用abstract声明;没有任何抽象方法的类也可以声明为抽象类,这时它不能实例化对象。,7.3.1抽象类举例,abstractclassAnimalpublicabstractvoidsleep();publicabstractvoidbreathe();publicabstractvoidswimming();publicabstractvoidfly();,classFishextendsAnimalpublicvoidsleep()System.out.println(“在水里睡觉”);publicvoidbreathe()System.out.println(“用腮呼吸”);publicvoidswimming()System.out.println(“鱼游泳”);publicvoidfly(),7.3.2抽象类使用的要点,抽象类不能实例化对象,只能作为父类使用;如果一个类继承了抽象类,这个类必须实现抽象类的所有抽象方法(即方法覆盖),否则这个类必须声明为抽象类;注意方法覆盖;abstract与final不能在一起使用;一个方法有了大括号就说这个方法实现了;,7.4接口,接口:不是类是一组对类的要求,不带有任何实现细节;简单的理解:可以看成是抽象方法和静态常量的集合;接口的分类:1.标记性接口:什么都没有,如Serilizable,Cloneable等2.常量群接口:只有常量,没有方法,如SwingConstants3.一般接口:,7.4.1接口的概念,7.4.2接口的作用,接口的使用弥补了Java单亲继承的缺点;类的继承:类继承类单继承接口:类实现接口多实现接口继承接口多继承有关系的类才能实现同一个抽象类,无关系的类不可能有同一个父类,但无关的类可以有同一个接口;接口的使用使得项目中多个程序员可以并行开发。,7.4.3接口的声明,接口中的(成员变量),自动声明为:publicstaticfinal接口中的成员方法,自动声明为:publicabstract,interfaceDancableintMIN_AGE=5;voidjump();voidroll();,7.4.4接口的使用,接口使用过程中的要点:1.接口不能实例化对象;2.接口只能继承接口;3.实现接口时必须实现接口中所有的方法,否则该类必须声明为抽象类。,classPersonimplementsDancablepublicvoidjump()System.out.println(“起跳”);publicvoidroll()System.out.println(“旋转”);,7.4.5接口作为方法的参数,接口可以作为某个方法的参数,使用该方法时,传递的是实现了该接口的某个类的对象,如:,classTestpublicvoidfun(Dancableb)b.jump();publicstaticvoidmain(Stringargs)Testt=newTest();Personp=newPerson();t.fun(p);,7.5多态7.5.1多态的概念,可以把替代原则变换为继承机制:我们可以将某个对象看成为所属类的实例,也可以看成是其超类的实例。例如:Animala=newFish();多态,是指多种表现形式。是允许将父对象设置成为和一个或多个它的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作;简单的说,就是允许将子类类型赋值给父类类型。多态的特性:编译时接口缩小,运行时动态邦定;参数传递过程中的多态现象。,7.5.2多态测试,publicclassTestpublicstaticvoidmain(Stringargs)Animala=newFish(1,1,big);a.sleep();Fishf=newFish(1,1,big);fun(f);publicstaticvoidfun(Animala)a.breathe();思考:a.swimming()能用吗?,7.6类型转换,语法:(类名)对象名;有继承关系的类的对象之间才能进行转换;只有曾经上溯造型过的对象才可以下溯造型;,publicclassTestAnimala=newFish(1,1,big);Fishf=(Fish)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025河南新乡市新乡县消防救援大队招聘政府专职消防队员、消防文员12人考前自测高频考点模拟试题完整参考答案详解
- 2025年衢州市衢江区卫生健康系统招引高层次紧缺人才27人模拟试卷及答案详解(易错题)
- 2025年春季江苏凤凰新华书店集团有限公司市县分公司招聘考前自测高频考点模拟试题及完整答案详解一套
- 2025贵州余庆县招聘10名城镇公益性岗位人员模拟试卷及答案详解(全优)
- 2025年温州永嘉县桥头镇中心卫生院招聘临时医务人员3人考前自测高频考点模拟试题及1套完整答案详解
- 2025年攀枝花市科学技术局所属事业单位春季人才引进考核招聘模拟试卷完整参考答案详解
- 2025河北招聘(选聘)辅助性岗位工作人员13人模拟试卷(含答案详解)
- 2025河北省人民医院招聘考前自测高频考点模拟试题及完整答案详解
- 2025年广元市贵商村镇银行科技人才招聘考前自测高频考点模拟试题及参考答案详解1套
- 2025年河北唐山幼儿师范高等专科学校公开选聘工作人员岗位模拟试卷有完整答案详解
- 仁爱版九年级英语上册unit2topic1复习课市公开课一等奖省课获奖课件
- 北京市国内旅游合同书
- 公司品牌建设五年规划
- 第二单元 三国两晋南北朝的民族交融与隋唐统一多民族封建国家的发展 知识清单 高中历史统编版(2019)必修中外历史纲要上册
- 居室环境的清洁与消毒
- GB/T 39766-2021人类生物样本库管理规范
- GB/T 2900.50-2008电工术语发电、输电及配电通用术语
- GB/T 2518-2008连续热镀锌钢板及钢带
- GB/T 1689-2014硫化橡胶耐磨性能的测定(用阿克隆磨耗试验机)
- 第二讲国外教育评价的发展历程
- 中外管理思想史-课件
评论
0/150
提交评论