第8讲(2.5) 类的多态 ppt课件.ppt

第8讲(2.5) 类的多态 ppt课件.ppt

ID:59211175

大小:1.37 MB

页数:74页

时间:2020-09-26

第8讲(2.5) 类的多态 ppt课件.ppt_第1页
第8讲(2.5) 类的多态 ppt课件.ppt_第2页
第8讲(2.5) 类的多态 ppt课件.ppt_第3页
第8讲(2.5) 类的多态 ppt课件.ppt_第4页
第8讲(2.5) 类的多态 ppt课件.ppt_第5页
资源描述:

《第8讲(2.5) 类的多态 ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第八讲类的多态第8讲类的多态性2021/9/101多态性:(1)方法的多态性(重载):同一个方法名称根据输入参数的不同,完成的功能也不同。(2)对象的多态性:是继承上的扩展,是子类对象与父类对象之间的转换。1、对象的多态性例1没有转型继承例子方法调用classA{publicvoidfun1(){System.out.println("1、A-->publicvoidfun1()");}publicvoidfun2(){this.fun1();}};classBextendsA{publicvoidfun1()//覆写了fun1()方法{System.out.println

2、("2、B-->publicvoidfun1()");}publicvoidfun3(){System.out.println("3、B-->publicvoidfun3()");}};publicclassInherit1{publicstaticvoidmain(Stringargs[]){Bb=newB();b.fun2();b.fun3();}};上例程序运行结果2、B-->publicvoidfun1()3、B-->publicvoidfun3()例2向上转型例子classA{publicvoidfun1(){System.out.println("1、A-->p

3、ublicvoidfun1()");}publicvoidfun2(){this.fun1();}};classBextendsA{//覆写了fun1()方法publicvoidfun1(){System.out.println("2、B-->publicvoidfun1()");}//增加了一个fun3()方法publicvoidfun3(){System.out.println("3、B-->publicvoidfun3()");}};publicclassSonChangeFather{publicstaticvoidmain(Stringargs[]){Aa=nul

4、l;a=newB();//子类对象为父类实例化a.fun2();}};如果一个方法被子类覆写了,则子类与父类之间发生转换时,自动去调用已经被覆写过的方法(子类中的方法),如果没有覆写,仍然去找本类(父类)中的方法。思考:已经转型的父类对象a,能否调用子类对象的fun3方法呢?回答:不能。转型后只能看到本类中已有的方法上例程序运行结果2、B-->publicvoidfun1()例3向下转型:上面的例题主方法做如下修改publicclassFatherCastSon{publicstaticvoidmain(Stringargs[]){Aa=null;a=newB();//子类

5、对象为父类实例化//fun1方法被子类覆写了Bb=null;b=(B)a;//向下转型b.fun2();b.fun3();//向下转型后的对象可以调用自己独//有的方法}};修改后程序运行结果2、B-->publicvoidfun1()3、B-->publicvoidfun3()思考:如果主方法改为如下调用情况如何?publicclassFatherDeirectSon{publicstaticvoidmain(Stringargs[]){Aa=newA();a.fun2();Bb=(B)a;b.fun2();}};分析:该主方法是错误的,原因是:父类定义中看不出自己的子类

6、B,所以父类对象直接向下转型时会报出:classCastException类型转换错误,也即:向下转型只能针对指向子类对象的基类对象引用进行修改后程序编译出现以下错误1、A-->publicvoidfun1()Exceptioninthread"main"java.lang.ClassCastException:jiuErWu.AcannotbecasttojiuErWu.BatjiuErWu.testOverWrite.main(testOverWrite.java:39)如果对象是类的实例则返回true,否则返回false如果一个对象被子类实例化了,则该对象既是本类的对

7、象,也是子类的对象注意:instanceof是关键字不是方法例4:instanceof应用举例classA{};classBextendsA{};publicclassInstanceOfFun{publicstaticvoidmain(Stringargs[]){Aa=newB();System.out.println(ainstanceofA);System.out.println(ainstanceofB);}};上例程序运行结果转型时的注意事项(1)向上转型是安全的,默认系统会自动转型。(2)但是向下转型往

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

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

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