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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 小黑马 黑马帝   /  2012-9-4 11:18  /  1750 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 马小龙 于 2012-9-4 13:50 编辑
  1. package com.itheima;
  2. public class Test3 {  
  3.    
  4.     public void myMethod(String str) {  
  5.         System.err.println("string");  
  6.     }  
  7.       
  8.     public void myMethod(Object obj) {  
  9.         System.err.println("object");  
  10.     }  
  11.       
  12.     public static void main(String[] args) {  
  13.         Test3 t = new Test3();  
  14.         t.myMethod( null );  //传入参数null
  15.     }  
  16. }  
复制代码
这里我在方法中传入null,为什么会找 public void myMethod(String str) 这个方法?

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 可以多看看基础的

查看全部评分

2 个回复

正序浏览
01.package com.itheima;

02.public class Test3 {  

03.   

04.    public void myMethod(String str) {  

05.        System.err.println("string");  

06.    }  

07.      

08.    public void myMethod(Object obj) {  

09.        System.err.println("object");  

10.    }  

11.      

12.    public static void main(String[] args) {  

13.        Test3 t = new Test3();  

14.        t.myMethod( null );  //传入参数null

15.    }  

16.}  
上面的代码中,你在一个类中定义了两个方法,一个是传字符串,另一个是Object  是所有类的超类,
所以String是Object的子类,当然在重载方法的时候是看传入参数的类型,而String的默认值是  null  ,
Object 是很多种类型的泛型,所以只有调用具体的 public void myMethod(String str) 这个方法。
回复 使用道具 举报
01.package com.itheima;

02.public class Test3 {  

03.   
        int  a = 3;
04.    public void myMethod(String str) {  

05.        System.err.println("string");  

06.    }  

07.      

08.    public void myMethod(Object obj) {  

09.        System.err.println("object");  

10.    }  

11.      

12.    public static void main(String[] args) {  

13.        Test3 t = new Test3();  

14.        t.myMethod( null );  //传入参数null
            t.myMethod( "abc" );

15.    }  

16.}  
   加上  t.myMethod( "abc" ); 依然执行的是mymethod(String str)因为String类继承Object
传入的是具体的字符串类型就会执行mymethod(String str),又因为String是集合类是引用类型,默认的对象类型是null,所以还是执行mymethod(String str)如果你这样调用的话 t.myMethod( a ); 执行的就是public void myMethod(Object obj)

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马