怎么区分方法是继承来的还是实现的接口中的方法

hongbiangoal 2009-07-23
一个类A继承某抽象类B并且实现了接口C
       类B中有一个抽象方法test();
        接口C中有一个方法test();
        实例A后调用test方法 怎么区分调用的是父类还是接口的?
       
hongbiangoal 2009-07-23
  很火啊
HelloJimmy 2009-07-26
hongbiangoal 写道
一个类A继承某抽象类B并且实现了接口C
       类B中有一个抽象方法test();
        接口C中有一个方法test();
        实例A后调用test方法 怎么区分调用的是父类还是接口的?
       


根据多态,调用的还是A中的方法。。。。。。
jamesliulyc 2009-07-28
abstract class A {
   abstract void test();
}

interface B {
  void test();
}

public class C extends A implements B {
   public void test() {
       System.out.println("");
   }

   public static void main(String[] args) {
      new C().test();
  }
}

是这样子吗,那怎么会调用A或者B里面的方法呢,都是要实现的
所以不是调用A或B里面的test是调用该实例的方法
jamesliulyc 2009-07-28
那我给个简单的对比,请问下面的是否会报错(不要用编译器)
abstract class A {
   abstract String test();
}

interface B {
  void test();
}

public class C extends A implements B {
   public void test() {
   System.out.println(this);
   }
  
   public static void main(String[] args) {
   new C().test();
   }
}
然后解释下就明白不是调用A或者B里面的方法,而是该实例的test()

jamesliulyc 2009-07-28
如果你是A a = new C();
然后a.test(),那么在编译器会到A里面检查是否有test()方法,如果没有报错
运行期呢,还是调用实例化得方法
请大家解释下,第二种就明白啥为重写与重载的矛盾
qyongkang 2009-07-28
貌似无论是集成还是实现,都一样吧,不太清楚
jamesliulyc 2009-07-28
继承和实现都一样吗,莫非是哪类新新语言
tmj_159 2009-08-08
用Eclipse 测试了下,发现个小秘密
鼠标放在C类test方法左边的小三角型上会得到提示
implements cn.com.A.test
所以。。。。。
hongbiangoal 2009-08-10
有点乱  缕一缕
Global site tag (gtag.js) - Google Analytics