题目:如下代码,输出是什么?
面试时,想了一下,直接说
很悲剧的错了,面试官细致的讲解了一下,然后豁然开朗。这里,主要考察的是重载机制:方法的重载是在编译时绑定。其中重载的方法f,形参Collection包含List,Set。在main方法中,c是Collection类型的数组,分别存放ArrayList和HashSet实例。而f(c[i])因为不像重写一样是动态绑定的,不会出现,当c[i]是ArrayList实例时,f调用的是f(List)方法;当c[i]是HashSet实例时,调用f(Set)方法。因为c是Collection类型数组,直接在编译时确定f应该指向f(Collection)方法,所以运行结果是: