java中一个Test类实现了2个接口(Inter1,Inter2),其中这2个接口都有一个相同的方法test(),请问我Test  t = new Test();当我t.test()时候,
调用的是那个接口的test()方法呢?

解决方案 »

  1.   

    我只知道肯定调用的是在TEST类中重写了的那个方法test();其他就不知道了期待高手解答
      

  2.   

    接口定义的都是空的,应该调用的是test的
      

  3.   

    补充:
    当Test t = new Test();
      t.test();的时候真正执行的是你写在Test类test方法中的代码,和那两个接口已经没有关系了
    接口强调你要实现某方法,不要求你怎样实现以及实现了该方法达到了什么效果
      

  4.   

    这种情况下,你在类Test里实现一个test(),就等于将两个接口的方法一起实现了,你调用的时候,调用你在Test中实现后的test()方法。
    这种写法尽量避免,估计只有scjp这种考试才会考这种吧......
      

  5.   

    -----调用的是那个接口的test()方法呢?-------楼主这种说法不对噢
    你的Test类的test()方法就是两个接口方法的实现,
    其他的类调用这两个接口的test()方法时
    都会执行此方法(前提是只有Test类实现实现此两接口,如果还有其他的类实现,那就具体分析了)
      

  6.   

    接口中只有方法的定义没有方法的实现,肯定是类Test中的方法test方法
      

  7.   

    调用本身系统默认的test()方法
      

  8.   

    既然Test类实现了接口,事实上必须实现,而实现接口,必须重写其方法,那么调用的当然是Test类中的test()方法了
      

  9.   

    接口只是定义了函数并没有具体实现函数,函数是在你实现接口的类中实现的,当然就只能调用Test类中实现的函数了,不存在什么重名的问题,Java不允许多继承就是这个原因。因为继承是在类中实现的,所以就存在调用的问题。
      

  10.   

    这个是无法区分的。类中test()同时实现了两个接口中同名同参数列表的方法,虽然在实例类中只有一个test()方法。
    其实你写个测试代码就可以得出结论;
    test code:
     interface Inter1
     {
           void test();
     }
     
     interface Inter2
     {
           void test();
     }
     
     class A implements Inter1,Inter2
     {
      public void test()
      {
             System.out.println("我同时实现了两个接口中的方法!");
      }
     }
     public class test
     {
      public static void main(String [] args)
      {
      A a=new A();
      a.test();
      }
     }如上代码,编译结果,编译可以通过。
    打印时候出现了两条记录,很显然是一个方法同时实现了两个接口中的同名同类型参数列表的方法。
    但这样做完全没有任何意义。
      

  11.   

    打印两条记录 我觉得可以这样理解类同时实现了接口中的两个方法,虽然方法是同名的,但在类进行实例时候的两个方法在堆内存中的地址是不同的。
    也就是说引用是不同的。当执行a.test(),同时有两条引用满足,就执行了这两个方法。不知这样理解是否正确呢,呵呵。
      

  12.   

    这个无需关心,借口的方法都是没有实现,可以说都是相同的吧
    所以无论多少个借口,有多少个同名的方法,都没有问题的
    java中没有C++那些多重继承的麻烦
      

  13.   

    sorry~!打错字了:是明显只有一个结果~
      

  14.   

    哈哈,这就是为什么java用接口代替多继承啊。如此经典的问题