首先 我想说 这个程序不是我的 但是我觉得这个能很好的反应出JAVA的多态,使大家能更好的理解JAVA多态.对大家的学习有点帮助。由于是COPY过来的 就不要积分了哈哈
希望大家能从中学到些什么。 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)...{ return ("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 d = new D();
System.out.println(a1.sho(b)); ①
System.out.println(a1.sh(c)); ②
System.out.println(a1.sho(d)); ③
System.out.println(a2.sh(b)); ④
System.out.println(a2.sho(c)); ⑤
System.out.println(a2.sh(d)); ⑥
System.out.println(b.s(b)); ⑦
System.out.println(b.sh(c)); ⑧
System.out.println(b.show(d)); ⑨
三)答案
① A and A
② A and A
③ A and D
④ B and A
⑤ B and A
⑥ A and D
⑦ B and B
⑧ B and B
⑨ A and D
1 a1.shows(b),在A中没有含有B类参数的方法,但是含有A类参数的方法,根据子类对象父类可用的原则,所以调用方法
public String show(A obj)...{return ("A and A");}
2 a1.show(c),C类是B类的子类,而B类又是A类的子类,所以C类对象可以当制作A类对象使用。结果同上。
3 a1.show(d),根据参数类型直接调用A中的方法 public String show(D obj)...{ return ("A and D"); }
4 a2.show(b),a2本来是一个B对象,但是将其赋给了A类变量,所以a2只保留了与父类A同名的属性和方法。a2.show(b)调用B类中的保留的与父类同名同参方法
public String show(A obj)...{ return ("B and A"); }
5 a2.show(c),B类的保留方法中没有C类参数方法,但是有含有C的父类A的参数方法,所以调用的方法
public String show(A obj)...{ return ("B and A"); }
6 a2.show(d),调用的是A类中的
public String show(D obj)...{ return ("A and D"); }
7 b.show(b),调用B类中的
public String show(B obj)...{ return ("B and B"); }
8 b.show(c),B类中没有C类参数的方法,但是有B类参数的方法,所以调用方法 public String show(B obj)...{ return ("B and B"); }
9 b.show(d),解释同8
P.S. 关于6中是否有权限问题 请大家自己试试为什么不调用public String show(A obj) 而调用 public String show(D obj) 可能是D的权限比A大吧….(个人理解)
分享到:
相关推荐
java 个人对于多态理解和一些笔记。
代码演示对java中多态的理解 从代码演示中更好的理解多态的作用
【Java面试题】谈谈对Java多态的理解
本文带您通过几个类的示例和讲解来理解Java多态性,Java多态性的概念也可以被说成“一个接口,多个方法
利用大量代码讲解java的多态,让你更容易理解和应用。
JAVA多态的理解.pdf
java多态的理解共3页.pdf.zip
编程语言JAVA多态的理解.pdf
用代码实例和注释向你讲述什么是多态,实例更容易理解
帮助你完全理解java多态的含义并附实例代码
想要下载此文件,请先下载本人“java程序中的内存分配问题”,因为那个例子比较简单而且分析详细透彻,可以使你更容易理解,如果你对java程序执行过程中的内存分配有一定的了解,可以直接下载本文件
对 于java的多态理解
本文精选了20道高难度的Java多态性面试题,并提供详细的答案解析,涵盖了多态性的概念、实现方式、绑定...通过这些高难度问题,您将全面掌握多态的原理、应用和实现技巧,展现出您对Java语言和面向对象设计的深入理解。
java程序设计中,多态的实现和理解,通过代码演示java程序设计中,多态的实现和理解,通过代码演示
多态的定义 多态是面向对象编程中的一个重要特性,它允许一个类的引用变量指向多种实际类型。这意味着在运行时,可以调用不同的方法实现不同的功能 多态的实现方式 多态可以通过继承、接口和重写实现。子类继承父类...
深入理解java多态中的变化提高代码的可维护性和可扩展性
Java的多态是学习Java的第一个重点,也是一个难点。在学习Java多态之前, 要学好封装和继承,封装和继承是理解多态的一个过程。在表现多态时,同 时也体现了封装和继承。
NULL 博文链接:https://lingf.iteye.com/blog/1450831