System.out.println(a1.show(b)); ① System.out.println(a1.show(c)); ② B,C,D都是A类的子类,a1指向A的对象,b指向B的对象,c指向的对象,①中,A是B的父类,所以调用A中的show(A obj)方法,,②同理,return ("A and A")System.out.println(a1.show(d)); ③ 直接将D的对象d传给show(D obj),return ("A and D")System.out.println(a2.show(b)); ④ System.out.println(a2.show(c)); ⑤ a2指向B类的对象,多态,故调用B类方法,b和c都是A类的子对象,所以当成A类的参数,调用show(A obj),return ("B and A")System.out.println(a2.show(d)); ⑥ B类继承了A类的show(D obj)方法,故调用此方法,return ("A and D")System.out.println(b.show(b)); ⑦ B类对象调用B类方法,show(B obj),return ("B and B")System.out.println(b.show(c)); ⑧ c是B类的子对象,当成B类参数传进去,show(B obj),return ("B and B")System.out.println(b.show(d)); ⑨ B类继承了A类的show(D obj)方法,故调用此方法,return ("A and D")
是的话很简单,debug就知道到底执行那块代码了,自己调试没用的话,就下载个试试。。
System.out.println(a1.show(c)); ②a1 是A的对象 ,c是C的对象,C-->B-->A,所以C可以转为A所以也是show(A obj)
System.out.println(a1.show(d)); ③d是D的对象,所以就直接走show(D obj)了
System.out.println(a2.show(c)); ⑤ a2 是B的对象,所以走的是B.show(A obj)
System.out.println(a2.show(d)); ⑥a2 是B的对象,由于继承关系,B中也是存在 B.show(D obj),只不过和A中时一样的
System.out.println(b.show(b)); ⑦.//自己分析
System.out.println(b.show(c)); ⑧//自己分析
System.out.println(b.show(d)); ⑨//自己分析
System.out.println(a1.show(c)); ②
B,C,D都是A类的子类,a1指向A的对象,b指向B的对象,c指向的对象,①中,A是B的父类,所以调用A中的show(A obj)方法,,②同理,return ("A and A")System.out.println(a1.show(d)); ③
直接将D的对象d传给show(D obj),return ("A and D")System.out.println(a2.show(b)); ④
System.out.println(a2.show(c)); ⑤
a2指向B类的对象,多态,故调用B类方法,b和c都是A类的子对象,所以当成A类的参数,调用show(A obj),return ("B and A")System.out.println(a2.show(d)); ⑥
B类继承了A类的show(D obj)方法,故调用此方法,return ("A and D")System.out.println(b.show(b)); ⑦
B类对象调用B类方法,show(B obj),return ("B and B")System.out.println(b.show(c)); ⑧
c是B类的子对象,当成B类参数传进去,show(B obj),return ("B and B")System.out.println(b.show(d)); ⑨
B类继承了A类的show(D obj)方法,故调用此方法,return ("A and D")