标题: 多态的题目 [打印本页] 作者: 邓浩宸 时间: 2015-12-7 22:55 标题: 多态的题目 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{}
class DynamicTest
{
public static void main(String[] args){
A a1 = new A();
A a2 = new B();
B b = new B();
C c = new C();
D d = new D();
System.out.println(a1.show(b));
System.out.println(a1.show(c));
System.out.println(a1.show(d));
继承就是将两个类的共性描述提取出来,
单独进行描述,从而简化代码,提高复用性。 作者: 邓浩宸 时间: 2015-12-7 23:11
明白这些之后,再来理解这题就很简单了
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(D obj){ //这是继承A父类的 show(D obj)方法
return ("A and D");
}
public String show(B obj){ //这是子类B特有的方法,父类A中没有
return ("B and B");
}
public String show(A obj){ //因为方法名和show(A obj)参数列表相同,这是复写父类B的show(A obj)方法,
return ("B and A");
}
}
class C extends B{
public String show(D obj){ //这是继承父类B的 show(D obj)方法
return ("A and D");
}
public String show(B obj){
return ("B and B");
}
public String show(A obj){
return ("B and A");
}
class D extends B{
public String show(D obj){ //这是继承父类B的 show(D obj)方法
return ("A and D");
}
public String show(B obj){ //这是继承父类B的 方法
return ("B and B");
}
public String show(A obj){ //这是继承父类B的 方法
return ("B and A");
}
class DynamicTest
{
public static void main(String[] args){
A a1 = new A();
A a2 = new B();
B b = new B();
C c = new C();
D d = new D();
System.out.println(a1.show(b));
System.out.println(a1.show(c));
System.out.println(a1.show(d));