Java知识点小记

当Java代码中有多个相同的方法名,如下:

public class Test {

    public void mythod(Object obj) {
        System.out.println("object");
    } 
    public void mythod(String str) {
        System.out.println("string");
    }public static void main (String[]args) {
        Test t=new Test();
        t.mythod(null);
    }
}
这个代码只会输出string,大概很多初学者应该会感到困惑,毕竟两个方法名一样为什么只输出string呢。
其实这样写的代码实际上有警告的,因为JVM不清楚要调用哪个,所以只能选择子类了,而String是Object的子类,于是就 优先匹配到String那个了 。
 
 如果再增加一个重载 就会报错了, 因为String和Integer不存在子父关系 , JVM并不清楚是谁,
 而单独有Object和String Object和String存在子父关系,优先匹配String

但是增加一个CharSequence也没有问题,只不过仍然会优先输出string,因为他们的关系是这样的  Object>CharSequence>String

 

所以的出结论,当一个类有多个相同的方法名,会优先选择子类型执行。

 

转载于:https://www.cnblogs.com/inthecloud/p/11225964.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值