深入理解Java多态性

深入理解Java多态性

ID:44869620

大小:24.02 KB

页数:3页

时间:2019-10-31

深入理解Java多态性_第1页
深入理解Java多态性_第2页
深入理解Java多态性_第3页
资源描述:

《深入理解Java多态性》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、深入理解java多态性(一)相关类 class A ...{         public String show(D obj)...{                return ("A and D");         }          public String show(A obj)...{                return ("A and A");         } } class B extends A...{         public String show(B obj)...{                r

2、eturn ("B and B");         }         public String show(A obj)...{                return ("B and A");         } }class C extends B...{} class D extends B...{}  (二)问题:以下输出结果是什么?        A a1 = new A();        A a2 = new B();        B b =new B();        C c = new C();         D 

3、d = new D();         System.out.println(a1.show(b));  ①        System.out.println(a1.show(c));  ②        System.out.println(a1.show(d));  ③        System.out.println(a2.show(b));  ④        System.out.println(a2.show(c));  ⑤        System.out.println(a2.show(d));  ⑥        Sys

4、tem.out.println(b.show(b));    ⑦        System.out.println(b.show(c));     ⑧        System.out.println(b.show(d));    ⑨     (三)答案             ①  A andA             ②  AandA             ③  AandD              ④  BandA             ⑤  BandA             ⑥  AandD             ⑦  Ban

5、dB             ⑧  BandB             ⑨  AandD(四)分析       ①②③比较好理解,一般不会出错。④⑤就有点糊涂了,为什么输出的不是"BandB”呢?!!先来回顾一下多态性。       运行时多态性是面向对象程序设计代码重用的一个最强大机制,动态性的概念也可以被说成“一个接口,多个方法”。Java实现运行时多态性的基础是动态方法调度,它是一种在运行时而不是在编译期调用重载方法的机制。       方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overrid

6、ing是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写(Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overridi

7、ng是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写(Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。       当超类对象引用变量引用子类对象时,被引用对象的类型而不是引用变量的类型决定了调用谁的成员方法,

8、但是这个被调用的方法必须是在超类中定义过的,也就是说被子类覆盖的方法。(但是如果强制把超类转换成子类的话,就可以调用子类中新添加而超类没

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

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

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