在java中调用的方法

时间:2015-06-14 11:31:11

标签: java

我的课程结构如下:

void add(String s){
    System.out.println("string");
}

void add(Object s){
    System.out.println("object");
}

public static void main(String[] args) {
    new MyClazz().add(null);
}

O / P:string

为什么不调用对象?

1 个答案:

答案 0 :(得分:2)

StringObject更具体。因此,void add(String s)优先于void add(Object s)

  

15.12.2. Compile-Time Step 2: Determine Method Signature

     

第二步搜索上一步中确定的类型   成员方法。此步骤使用方法的名称和参数   表达式,用于查找既可访问又适用的方法,   也就是说,可以在给定的上正确调用的声明   参数。

     

可能有多种这样的方法,在这种情况下最多   选择特定的一个。 描述符(签名加返回类型)   最具体的方法是在运行时用于执行的方法   方法调度。