Java对重载方法使用静态绑定,对重载方法使用动态绑定。在你的示例中,equals方法被重载(与Object.equals()具有不同的参数类型),因此所调用的方法在编译时绑定到引用类型。
这里一些讨论
它是equals方法的事实并不重要,除了重载而不是覆盖它是一个常见错误之外,你已经根据面试中对问题的答案意识到了这一点。
编辑:这里也是一个很好的描述。本示例显示了与参数类型有关的类似问题,但是是由同一问题引起的。
我相信,如果绑定实际上是动态的,则在任何情况下调用方和参数均为Test实例的情况都将导致调用重写的方法。因此,t3.equals(o1)将是唯一无法打印的情况。



