Java-面向对象(高级篇)--对象的多态性.docxVIP

Java-面向对象(高级篇)--对象的多态性.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Java-面向对象(高级篇)--对象的多态性

对象的多态性对象多态性在面向对象中是一个最重要的概念,在Java中主要有两种体现形式:方法的重载和覆写对象的多态性对于方法的重载和覆写在之前的讲解中,下面将重点介绍对象的的多态性。对象的多态性主要分为以下两种类型:向上转型:子类对象—》父类对象;向下转型:父类对象—》子类对象;对于向上转型,程序会自动完成,而对于向下转型时,必须明确的指明要转型的子类类型,格式如下:对象向上转型:父类父类对象 =子类实例;对象向下转型:子类子类对象 =(子类)父类对象;下面进行对象向上转型的操作:【对象向上转型】class A{public void fun1(){System.out.println(A--public void fun1());}public void fun2(){this.fun1();}}class B extends A{//覆写A中的方法public void fun1(){System.out.println(B--public void fun()1);}//子类中自己定义的方法public void fun3(){System.out.println(B--oublic void fun3());}}public class PolDemo01{public static void main(String[] args){B b=new B();//定义子类实例化对象A a=b;//发生了向上转型的关系,子类--》父类a.fun1();//此方法被子类覆盖}}程序运行结果:B--public void fun()1以上程序就是一个对象向上转型的关系,从程序的运算结果中可以发现,此时虽然使用父类对象调用fun1()方法,但是实际上调用的方法是被子类覆写过的方法,也就是说,如果对象发生了向上转型关系后,所调用的方法一定是被子类覆写过的方法。但是在此时一定要注意,此时的对象a是无法调用B类中的fun3()方法的,因为此方法只在子类中定义而没有在父类中定义,如果要想调用子类中的自己定义的方法,则肯定要使用子类实例,所以此时可以将对象进行向下转型。【对象向下转型】class A{public void fun1(){System.out.println(A--public void fun1());}public void fun2(){this.fun1();}}class B extends A{//覆写A中的方法public void fun1(){System.out.println(B--public void fun()1);}//子类中自己定义的方法public void fun3(){System.out.println(B--oublic void fun3());}}public class PolDemo01{public static void main(String[] args){A a=new B();//发生了向上转型关系,子类--》父类B b=(B)a;//此时发生了向下转型关系b.fun1();//调用方法被覆写的方法b.fun2();//调用父类的方法b.fun3();//调用子类定义的方法}}运行结果:B--public void fun()1B--public void fun()1B--oublic void fun3()从以上程序中可以发现,如果要想调用子类自己的方法,则一定只能用子类的实例化对象,另外,在子类对象里调用从父类中继承过来的fun2()方法,fun2()方法要调用fun1()方法,由于此时fun1()方法已经被子类所覆写,所以此时调用的方法是被子类覆写过的方法。对象向下转型的要求:在对象向下转型前,必须首先发生对象向上转型,否则将出现对象转化异常。了解了对象的多态性后,那么这个概念到底有什么用途哪?下面要求设计一个方法,要求此方法可以接收A类的任意子类对象,并调用方法,此时,如果不用对象的多态性,则肯定会使用以下形式的代码:【不使用对象多态性实现功能】class A{public void fun1(){System.out.println(A--public void fun1());}public void fun2(){this.fun1();}}class B extends A{//覆写A中的方法public void fun1(){System.out.println(B--public void fun1());}//子类中自己定义的方法public void fun3(){System.out.println(B--poublic void fun3());}}class C extends A{public void fun1(){Syste

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档