需要理解Overriding 、 Overloading以及重载匹配算法。
有类层次如图
package OO;
import static tips.Print.pln;//System.out.println
public class Sup{
public void show(Sup obj) {pln("Sup/Sup"); }
public void show(SubSubY obj){pln("Sup/SubSubY"); }
}
package OO;
import static tips.Print.pln;
public class Sub extends Sup{
@Override public void show(Sup obj) {pln("Sub/Sup"); }
public void show(Sub obj){pln("Sub/Sub"); }
}
package OO;
public class SubSubX extends Sub{}
package OO;
public class SubSubY extends Sub{}
请给出下面代码的输出:
public static void main(){
Sup g1 = new Sup();
Sup g2 = new Sub();
Sub f = new Sub();
SubSubX x = new SubSubX();
SubSubY y = new SubSubY();
g1.show(f);
g1.show(x);
g1.show(y);
g2.show(f);
g2.show(x);
g2.show(y);
f.show(f);
f.show(x);
f.show(y);
}
答案:
Sup/Sup
Sup/Sup
Sup/SubSubY
Sub/Sup
Sub/Sup
Sup/SubSubY
Sub/Sub
Sub/Sub
Sup/SubSubY