interface a1
{
   void fun();
}
interface a2
{
   void fun();
}public class a implements a1 ,a2
{
   public void fun(){
   System.out.println("qqqq");
   }
   static void show(a1 aa)
   {
     aa.fun();
   }
   static void show1(a2 aa)
   {
     aa.fun();
   }   public static void main(String args [])
   {
     show(new a());
     show1(new a());   } 
}
编译运行皆正常,问题是请各位大侠告诉我:是不是一个fun实现了a1,a2接口的fun。如果不是它到底实现的是那个?

解决方案 »

  1.   

    这个是java的一个bug吧可以说,如上面所说,两个都实现了.
    首先来说,这种问题比较难碰到.
    然后呢,我给出这个问题的解决方法.
    用内部类,来实现一个接口,用封装类实现一个接口,这样就可以区分两个接口内的方法.
      

  2.   

    搞错了,把代码格式没有调,重调一下,解决方案就是以下代码的方法:
    interface A1 

      void fun(); 

    interface A2 

      void fun(); 
    } public class A implements A1 { 
      public void fun(){ 
      System.out.println("A"); 
      } 
      
      class B implements A2 { 
        public void fun(){ 
          System.out.println("B"); 
        } 
      } 
      

  3.   

    个人认为 两个接口中的方法可以名称一样。这样没有违背接口的定义。
    接口这样描述自己:“对于实现我的所有类,看起来都应该象我现在这个样子”。因此,采用了一个特定接口的所有代码都知道对于那个接口可能会调用什么方法。 (think in java)
    为什么不同的接口 不能调用相同的方法?两个接口可以长得很像.
      

  4.   


    的确,这在java里是允许这样做的,但是在编程中会困扰程序员,所以,遇到这样的问题,可以用我上面讲的方法去区分解决