面向对象程序设计第5章继承与接口课件.ppt

面向对象程序设计第5章继承与接口课件.ppt

ID:57067200

大小:520.50 KB

页数:27页

时间:2020-07-30

面向对象程序设计第5章继承与接口课件.ppt_第1页
面向对象程序设计第5章继承与接口课件.ppt_第2页
面向对象程序设计第5章继承与接口课件.ppt_第3页
面向对象程序设计第5章继承与接口课件.ppt_第4页
面向对象程序设计第5章继承与接口课件.ppt_第5页
资源描述:

《面向对象程序设计第5章继承与接口课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、本次内容类的继承4123方法的多态性抽象类和最终类接口二、方法的多态性多态性:发送消息给某个对象,让该对象自行决定响应何种行为  。通过将子类对象引用赋值给超类对象引用变量来实现动态方法调用  。java遵循原则:当超类对象引用变量引用子类对象时,被引用对象的类型而不是引用变量的类型决定了调用谁的成员方法,但是这个被调用的方法必须是在超类中定义过的,也就是说被子类覆盖的方法  。1.如果a是类A的一个引用,那么,a可以指向类A的一个实例,或者说指向类A的一个子类  。2.如果a是接口A的一个引用,那么,a必须指向实现了接口A的一个类的实例  。二、方法的多态性引

2、用变量有两个类型编译时的类型运行时的类型由声明该变量时使用的类型决定由实际赋给该变量的对象决定如果编译时的类型和运行时类型不一致,就出现多态(Polymorphism)。Helloh=newTestHello();Helloh=newHello();二、方法的多态性publicclassSubClassextendsBaseClass{publicStringbook="轻量级J2EE企业应用实战";publicvoidtest(){System.out.println("子类的覆盖父类的方法");}publicvoidsub(){System.out.prin

3、tln("子类的普通方法");}publicstaticvoidmain(String[]args){BaseClassbc=newBaseClass();System.out.println(bc.book);bc.base();bc.test();SubClasssc=newSubClass();System.out.println(sc.book);sc.base();sc.test();sc.sub();BaseClassploymophicBc=newSubClass();System.out.println(ploymophicBc.book);pl

4、oymophicBc.base();ploymophicBc.test();}}编译时类型和运行时类型完全一样,不存在多态编译时类型和运行时类型完全一样,不存在多态编译时类型和运行时类型不一样,多态发生ploymophicBc.sub();//对么?二、方法的多态性子类是一种特殊的父类,因此Java允许把一个子类对象直接赋给一个父类引用变量,无须任何类型转换,或者被称为向上转型(upcasting),向上转型由系统自动生成。当把一个子类对象直接赋给父类引用变量,运行时调用该引用变量的方法时,其方法行为总是像子类方法的行为,而不是像父类方法行为,这将出现相同类型的

5、变量、执行同一个方法时呈现出不同的行为特征,这就是多态。对象的属性不具有多态性返回主菜单二、方法的多态性记住一个很简单又很复杂的规则,一个类型引用只能引用引用类型自身含有的方法和变量。你可能说这个规则不对的,因为父类引用指向子类对象的时候,最后执行的是子类的方法的。其实这并不矛盾,那是因为采用了后期绑定,动态运行的时候又根据型别去调用了子类的方法。而假若子类的这个方法在父类中并没有定义,则会出错。返回主菜单三、抽象类和最终类1、抽象类(1)引入classShape{publicStringcalPerimeter()//计算周长{/*各种形状计算周长的公式不同,

6、此处如何书写?*/}}classTriangleextendsShape{publicStringcalPerimeter{//…}publicstaticvoidmain(String[]args){Shapet=newTriangle();}}如果去掉此方法,降低程序的灵活性使用抽象方法即可满足要求:只有方法签名,没有方法的具体实现。三、抽象类和最终类1、抽象类(2)publicabstractclassShape{{System.out.println("执行Shape的初始化块...");}privateStringcolor;publicabstrac

7、tdoublecalPerimeter();publicabstractStringgetType();publicShape(){}publicShape(Stringcolor){System.out.println("执行Shape的构造器...");this.color=color;}publicvoidsetColor(Stringcolor){this.color=color;}publicStringgetColor(){returnthis.color;}}抽象类,用abstract修饰抽象方法,注意和空方法体的区别三、抽象类和最终类1、抽象类(

8、3)使用规则抽象类必须使

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。