public interface B{
      public void func();
}
public class  A implements B{
      public void func(){return ;}
      public void func0{func();}
}假如还存在一个类C,C实现了B的func()方法。那么func0调用的func()到底应该是A自身的呢,还是C实现的那个呢?
小弟是java新手,请执教

解决方案 »

  1.   


    interface B{
          public void func();
    }public class A implements B{
    public static void main(String args []){
    //父类引用指向子类对象,方法重写,有继承,这不就是多态吗?

    //a是接口B的引用,指向了子类A和C的对象
    B a=new A();
    //为什么输出结果是A,因为多态,编译器会在运行时决定到底是调用谁。
    //总结new谁调谁,new的是A调的就是A类的func()方法,new的是B调的是B类的方法
    a.func();

    //输出结果是A

    a=new C();
    a.func();
    //输出结果是B
    }

    public void func(){
    System.out.println("A");
    //func();楼主这样写是有错误的,这里会一直调用func();
    //这里调用的是自己的func()方法,更C类没有联系
    }
    } class C implements B{
     //方法的重写
    public void func(){
    System.out.println("B");

    }
    }
      

  2.   

    C和A什么关系?
    如果C和A没关系,那么就是调用C自身实现的那个方法
    如果C是A的子类,那么如果C重写了func方法,那么就是调用C自身的,否则就是调用A的
      

  3.   

    楼主自己本身就没有说明ABC的继承关系,这个问题无法回答的。
      

  4.   

     public void func0{func();}
    这个方法是A得,不是C的,因此它里面的func();是不可能调C类的。
    具体调的可能是A类的