Java对重载方法使用静态绑定,对重载方法使用动态绑定。在您的示例中,equals方法被重载(与Object.equals()具有不同的参数类型),因此所调用的方法在编译时绑定到引用类型。
它是equals方法的事实并不重要,除了重载而不是覆盖它是一个常见错误之外,您已经根据面试中对问题的回答知道了这一点。
编辑:这里也是一个很好的描述。本示例显示了与参数类型有关的类似问题,但是是由同一问题引起的。
我相信,如果绑定实际上是动态的,则在任何情况下调用方和参数都是Test实例的情况都将导致调用重写的方法。因此,t3.equals(o1)将是唯一无法打印的情况。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)