关于Java中的后期绑定(动态多态)的困惑

时间:2019-05-19 16:59:51

标签: java polymorphism override overloading

我有一个超类“ B类”和一个子类“ C类”。 B类和C类都具有if($row && $row['username'] == $username && $row['password'] == $password){ 。 B类具有private void print(),它调用public void printPriv(B b),而D类具有b.print(),它调用public void printPriv(D d)。问题是执行main方法时:

d.print()

输出为“ B”,但由于动态多态性(后期绑定),我希望输入“ D”。为什么未调用D类中的class B { private void priv() { System.out.println("B"); } public void printPriv(B b) { b.priv(); } } class D extends B { private void priv() { System.out.println("D"); } public void printPriv(D d) { d.priv(); } } public static void main(String [] args){ B b = new B(); D d = new D(); b.printPriv(d); }

0 个答案:

没有答案