给定 Java 中同一个类的两个方法:
public void doSomething( Person person );
public void doSomething( Employee employee );
where
Employee extends Person
如果我打电话:
doSomething( employee )
我发现doSomething( Person )
被调用。
我预计会调用最接近的匹配合约的重载,而不是最抽象的合约(这就是我发现的)
有人可以解释为什么吗?
使用最具体的适用过载 - 但该过载是在以下位置确定的compile-time,基于编译时类型employee
多变的。
换句话说:
Employee employee = new Employee();
doSomething(employee); // Calls doSomething(Employee)
but:
Person employee = new Employee();
doSomething(employee); // Calls doSomething(Person)
请注意,这不同于压倒性的它在哪里执行时间处理时间目标对象的类型很重要。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)