class A 
{
}class B extends A
{
}class Test
{
private static void doIt(A a)
{
System.out.println("A");
}
private static void doIt(B b)
{
System.out.println("B");
} public static void main(String[] args)
{
//doIt(new A());
//doIt(new B()); doIt(null);
}
}

解决方案 »

  1.   

    class B extends AB类的doIt把A类的doIt重新定义
      

  2.   

    class A 
    {
    }
    class B extends A
    {
    }
    class C extends B
    {
    }
    class Test
    {
    private static void doIt(A a)
    {
    System.out.println("A");
    }
    private static void doIt(B b)
    {
    System.out.println("B");
    }
    private static void doIt(C c)
    {
    System.out.println("c");
    }
    public static void main(String[] args)
    {
    doIt(new A());
    doIt(new B());doIt(null);
    }
    }看一下这个输出的是C。java的多态设计意思是说从下到上的搜索吧。呵呵。我是这么理解的。
      

  3.   


    是从小类匹配开始的(如果存在继承关系的话)null可以匹配任意Object,所以...