zoukankan      html  css  js  c++  java
  • 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

     

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

  • 相关阅读:
    3.3 直方图处理与函数绘图
    光头强
    考试代码模板
    【2015初赛】预备
    NOIP2018 模拟题
    NOIP2017 模拟赛
    【解题报告】树形DP入门
    【解题报告】区间DP
    【解题报告】树形背包
    二分刷题单
  • 原文地址:https://www.cnblogs.com/inthecloud/p/11225964.html
Copyright © 2011-2022 走看看