一道多态性的题,实在理解不了了~~~~
来源:百度文库 编辑:神马文学网 时间:2024/04/27 23:39:25
写出以下代码的输出结果
class A{
public String f(D obj){return ("A and D");}
public String f(A obj){return ("A and A");}
}
class B extends A{
public String f(B obj){return ("B and B");}
public String f(A obj){return ("B and A");}
}
class C extends B{}
class D extends B{}
class test{
A a1 = new A();
A a2 = new B();
B b = new B();
C c = new C();
D d = new D();
System.out.println(a1.f(b)); A and A
System.out.println(a1.f(c)); A and A
System.out.println(a1.f(d)); A and D
System.out.println(a2.f(b)); B and A
System.out.println(a2.f(c)); B and A
System.out.println(a2.f(d)); A and D
System.out.println(b.f(b)); B and B
System.out.println(b.f(c)); B and B
System.out.println(b.f(d)); A and D
}
旁边的是标准答案,前三个都很好理解,但是后面三个真的是一头雾水啊,难道b,c都变成类A了?还有d,是不是如果子类里没有他的方法可调用,就看超类里是否有与他相对应的方法?
然后最后一个,b不是已经声明为B类了吗?为什么会调用A类里的方法呢?为什么结果不能是B and B呢?
大家能帮忙给小弟解解惑吗?真是一头雾水啊!~~~~~~~~~~~
class A{
public String f(D obj){return ("A and D");}
public String f(A obj){return ("A and A");}
}
class B extends A{
public String f(B obj){return ("B and B");}
public String f(A obj){return ("B and A");}
}
class C extends B{}
class D extends B{}
class test{
A a1 = new A();
A a2 = new B();
B b = new B();
C c = new C();
D d = new D();
System.out.println(a1.f(b)); A and A
System.out.println(a1.f(c)); A and A
System.out.println(a1.f(d)); A and D
System.out.println(a2.f(b)); B and A
System.out.println(a2.f(c)); B and A
System.out.println(a2.f(d)); A and D
System.out.println(b.f(b)); B and B
System.out.println(b.f(c)); B and B
System.out.println(b.f(d)); A and D
}
旁边的是标准答案,前三个都很好理解,但是后面三个真的是一头雾水啊,难道b,c都变成类A了?还有d,是不是如果子类里没有他的方法可调用,就看超类里是否有与他相对应的方法?
然后最后一个,b不是已经声明为B类了吗?为什么会调用A类里的方法呢?为什么结果不能是B and B呢?
大家能帮忙给小弟解解惑吗?真是一头雾水啊!~~~~~~~~~~~
一道多态性的题,实在理解不了了~~~~
对Java程序多态性支持的改进
对Java程序多态性支持的改进
我实在不能理解有些女人的观点
一道终身受用的测试题(太精彩了)
你作为中国人绝对理解不了的可怕风俗
一道有趣的题
一道有趣的题
PHP 5.0多态性方案浅析,php 多态性的设计,PHP技巧
一道难倒了周杰伦的小学生考题
一道特殊的测试题
一道终身的测试题
一道发人深思的测试题
日本的伪娘实在是太强了
一生的对比,实在太经典了
难道我真的过不了了
我们真的理解泡沫了吗?
一个英文老师出了一道这样的难题
现在小学语文太难了,看他们的一道作业题
一道终身受用的测试题
一道百度笔试题的解决方案
众人都说准的一道测试题
爱因斯坦出的一道测试题
受用终身的一道测试题!