慕容囧囧
2018-03-13 15:34
采纳率: 25%
浏览 1.2k
已采纳

java多态,到底调用哪个函数,为什么?

这里是考java的多态,**到底调用了哪个函数,**大家直接看下面的代码!
public class MyTest {
public void hello(Object o) {
System.out.println("Object");
}
public void hello(String str) {
System.out.println("String");
}
public static void main(String[] args) {
MyTest myTest = new MyTest();
/*到底调用哪个函数,为什么?*/
//情况1
myTest.hello(null);
//情况2
myTest.hello("好好学习,天天向上!");
//情况3
myTest.hello(66);
//还有其他情况,我这里就不依次列举了
}
}


  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

5条回答 默认 最新

  • 土豆的小秘密 2018-03-14 02:37
    已采纳

    楼上的几个回答都是对的。对于重载方法里的参数处于父子继承关系,应当优先选择精确度比较高的子类。
    1、比如Object 和 String,如果传的值为null,则优先调用String参数的重载方法。
    2、对于参数值=66的情况,由于66为int类型,它没有找到指定类型的重载方法,会装箱为Integer类型,调用参数类型为Object的重载方法。
    总之,构建多个重载方法时,尽量将重载方法参数类型处于精确状态。

    已采纳该答案
    打赏 评论
  • threenewbee 2018-03-13 15:44

    这个需要用方法重载中准确性的原则来解释

    具体不说了,参考这里:http://blog.csdn.net/jackpk/article/details/43453313

    打赏 评论
  • 学徒-Junking 2018-03-13 16:00

    多态优先调用子类,子类没法满足再调父类

    打赏 评论
  • lingco 2018-03-14 00:43

    参数有继承顺序的,优先调用子类

    打赏 评论
  • 白衣胜雪1 2018-03-14 01:09

    输出顺序: String String object

    这段代码考的是多态,难点在于情况1。当参数值为null时,系统判断是null=String更准确。 并不是说Object错了,因为Object与String同时出现时,Object比String层次更高,调用String更为准确

    打赏 评论

相关推荐 更多相似问题