public abstract class A
{
    public abstract void fun();
}
public class B extends A
{
    public void fun()
    {System.out.printlen("B");}
}
public class C extends A
{
    public void fun()
    {System.out.printlen("C");}
}
如上面所述,如果可以,那么,我在调用func的时候,调用的是哪个的实现呢

解决方案 »

  1.   

    如果A a = new B()就用B那個
    如果A a = new C()就用C那個
      

  2.   


    public class D 
    {
        void testFun(A a)
        {
            a.fun();
        }
    }应该输出哪个呢
      

  3.   

    先看对象是那个,new出来的是那个啦,那个去调用就是那个 ,new出B的对象那就调用他的了。
      

  4.   

    你调用你的testFun方法时参数要你实例化的一个对象的。你new的是哪个类就是哪个类的。
      

  5.   


    参数传进来的是什么实例就调用那个实例的方法
    比如
    A a = new B();
    testFun(a); //调用B的方法
    a = new C();
    testFun(a); //调用C的方法