我正在尝试了解java行为。使用此接口:
public interface IA {}
public interface IB extends IA {}
public class myClass implements IB {}
我正在重载这样的方法:
public void method(IA a);
public void method(IB b);
使用以下对象调用方法时:
IA a = new myClass();
method(a);
为什么使用java:
public void method(IA a);
代替
public void method(IB b);
?
Thanks
因为编译器只知道a
是一个实例IA
。重载是在编译时根据所涉及表达式的编译时类型以及a
is IA
.
(将此与覆盖进行比较,其中方法实现是在执行时间根据实际涉及的类型而定。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)