似乎无法理解复杂的多态性
我正在学习CS,我们有关于多态性的问题,我无法理解。下面是一个示例:
public class AA{
public AA(){
foo();
}
private void foo() {
System.out.print("AA::foo ");
goo();
}
public void goo(){
System.out.print("AA::goo ");
}
}
public class BB extends AA{
public BB(){
foo();
}
public void foo(){
System.out.print("BB:foo ");
}
public void goo(){
System.out.print("BB::goo ");
}
public static void main(String[] args){
// Code goes here
}
}
当在 void main i 添加行:
AA a = new BB();
它首先使用AA构造函数打印AA:foo,然后goo()将其发送到BB的goo,为什么会这样?
简单的多态性,如“动物 - >猫/蜘蛛/狗”很容易理解,但当涉及到这一点时,我只是迷失了。你们能给我一些关于如何阅读这段代码的提示吗?规则是什么?
编辑:没有注释,因为这是考试中的问题。@Override