java中对象类的机制是什么?

时间:2011-03-22 12:27:37

标签: java

class A{}
class Z{}
class S{}

public class Demo6 {

    void fun(A a){
        System.out.println("A reference");
    }

    void fun(Z z){
        System.out.println("Z reference");
    }

    void fun(Object o){
        System.out.println("other reference");
    }

    public static void main(String args[]){
        new Demo6().fun(new A());
        new Demo6().fun(new S());
    }   
}

以上代码的输出即将来临:

参考

其他参考

我的困惑是当我们传递'S'类对象时,“其他引用”是如何打印的。详细说明'S'类对象如何与“对象”类兼容的实际机制。

3 个答案:

答案 0 :(得分:5)

每个类都是java.lang.Object的子类,即使您没有显式扩展它。

答案 1 :(得分:2)

每个类都有java.lang.Object作为父级 - 即使您不编写extends Object,编译器也会自动添加它。引用the javadoc

  

Class Object是类层次结构的根。每个类都有Object作为超类。所有对象(包括数组)都实现此类的方法。

S显然存在,否则无法编译。然后编译器选择最具体的方法来调用。 SZA的签名不匹配,且与Object签名不匹配。

答案 2 :(得分:0)

S 是一种对象,因为Java中的每个类都是Object的子类。 当Java为 fun()搜索合适的方法重载时, fun(Object object)匹配参数,因此会调用它。

尝试查看Java中的方法重载。