我有一个超类“ 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);
}
?