A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© lucy198921 中级黑马   /  2013-3-24 12:03  /  1388 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 lucy198921 于 2013-3-24 14:01 编辑

package com.itheima;
public class Test3 {  

    public void myMethod(String str) {  
        System.err.println("string");  
    }  

    public void myMethod(Object obj) {  
        System.err.println("object");  
    }  

    public static void main(String[] args) {  
        Test3 t = new Test3();  
        t.myMethod( null );  //传入参数null
    }  
}  


这里我在方法中传入null,为什么会找 public void myMethod(String str) 这个方法?

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

2 个回复

倒序浏览
你把上边的  
public void myMethod(String str) {  
        System.err.println("string");  
    }  
的方法注释了 就会走下边这个了  
还可以 传入个非字符串 就会走Object了

所以我理解的是  它是先找比较小的类  也就是子类中符合要求的  如果子类没有符合要求的 就向上找



   public void myMethod(int str) {  
        System.err.println("int");  
    }  
    public void myMethod(Integer str) {  
        System.err.println("Integer");  
    }  
用上边这俩做实验  出入1 然后注释int 的 他就会去找Ineger  如果不注释 他就会找int

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
因为多态吧。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马