现在有 A类和B接口,同时有method()方法, 类C继承A实现B..
 
问:有什么方法使这两个method()方法不冲突??    
即能覆盖类A的方法,又能实现接口B的方法??             

public class C extends A implements B {  .......  
public static void main(String args[]){
A a=new C();
B b=new C();
a.method();//输入:覆盖A.method()
b.method();////输入实现B.method()
}
}class A{
public void method(){
System.out.println("A.method()方法");
}
}
interface B{
public int method();
}

解决方案 »

  1.   

    a.method();//输出:覆盖A.method() 
    b.method();////输出:实现B.method()
      

  2.   

    匿名内部类就可以完全解决。
    class A{void method(){}}
    interface B{void method();}
    class C extends A implements B {
      public void method(){ System.out.println("A.method()");}
      private static B getB(){
         return new B(){
            public  void method(){ System.out.println("B.method()");}
         };
      }
      public static void main(String args[]){ 
         new C().method();
         C.getB().method();
       }
    }
      

  3.   

    class A{
    public void method(){
    System.out.println("A.method()方法");
    }
    }
    interface B{
    public int method();
    }
    A中的method方法返回为void,如果要覆盖也一样要写成public void method(){……}
    而B接口中method方法返回为int,要是先这个方法写成public int method(){……}
    这个会冲突吗?
      

  4.   

    3楼,你改了人家的原题中的main()方法了,要求改了,答案就答非所问了。而且C中没有实现接口B中的method()方法。4楼,会冲突的。如果只是返回值不同,两个方法就会冲突。
      

  5.   

    典型的组合模式。
    Adaptee.class:
    public class Adaptee {
    public int get220v(){ 
    System.out.println("Adaptee---:220V");
           return 220; 

    }
    Adapter.class:
    public class Adapter extends Adaptee  implements Target{
        public int get220v(){ 
         System.out.println("---:220V");
            return 110; 
        }
    }
    Target .class:
    public interface Target { 
        int get220v(); 
    }
    Client:
    public class Client { 
        public static void main(String rags[]) { 
            new Client().test(); 
        }     public void test() { 
            int v1 = new Adaptee().get220v(); 
            int v2 = new Adapter().get220v(); 
        } 
    }
      

  6.   

    java通过函数名,参数个数,参数类型来区分函数。
    这个都一样,只有通过内部类来实现了。
      

  7.   

    13楼是正解吗?楼主发布的题目被继承的类与接口中的类返回类型是不同的!!!!!!!!!要不然怎么会叫冲突呢???????
    public class Adapter extends Adaptee  implements Target{ 
    }
    直接这样写是会报错的 编译器已经提示有冲突了,我对这题越来越感兴趣了,继续期待中!
      

  8.   

    (接刚才13楼)当然了 target.get220v(); 多种组合方式,看需求吧。
      

  9.   

    提醒楼上的一点,楼主的题目中:父类中的是 void method(),接口中是int method(),你先按照这样写一个看看报不报错再说吧!
      

  10.   

    我是麻烦你看看好不!!!!!!你不要看我的,你应该看楼主的,是楼主提的这个问题,你至少应该以楼主的题目为主吧,你写的父类中的方法与接口中的方法返回都是int型,当然不报错了!!!!!!!!!!!!!!
      

  11.   

    其中:
    Target target = new Adapter();
     System.out.println( target.get220v());
    就是 即能覆盖类A的方法,又能实现接口B的方法!            
      

  12.   

    还是不明白,按照你的代码中,Adaptee类中应该是void get220v(),而不是int get220v(),你把这个类中的方法都改了,应该属于不符合要求了吧!楼主这个公司的要求是这样的吗?
      

  13.   

    我的问题,sorry,偶在想想。
      

  14.   

    要实现楼主的想法,就不能这么写public class C extends A implements B 
    因为C要实现B的方法,还要继承A的方法,肯定会冲突的。
    可以这样来实现:
    class C extends A
    {
       public static void main(String args[])
       { 
         A a=new C(); 
         B b = new B(){
                public int method()
                {
                  System.out.println("B.method()方法");
                  return 0;
                }
             };
          a.method();//输入:覆盖A.method() 
          b.method();////输入实现B.method() 
        }
    }class A
    {
      public void method()
      { 
        System.out.println("A.method()方法"); 
      } 

    interface B

      public int method(); 
    }
    已验证
      

  15.   

    你这样只是继承了A类..C类和B接口没有任何联系..就谈不上实现B接口
      

  16.   

    我也怀疑这道题正确性..也只有等待高手的出现了.
    interface B{ 
    public int method(); 
    }
    /*******************************************************************/
    class A{ 
    public void method(){ 
    System.out.println("A.method()方法"); 


    /********************************************************************/
    class C extends A {  private int aParam;
    public void method() {
    System.out.println("覆盖A.method()"); 
    }

    class D implements B{
    public int method(){
    System.out.println("实现B.method()");
    return aParam;
    }
    }
    } /********************************************************************/public class Test{
    public static void main(String args[]){ 
    C c=new C(); 
    A a=c;
    B b=c.new D(); 
    a.method();//输出:覆盖A.method() 
    b.method();//输出:实现B.method() 

    }
      

  17.   

    我绝不敢到CSDN来忽悠各位...在现实开发中,也会常遇到两个以上接口同名,同参数列表的情况..

    interface E
    {
       public int getID();
    }
    interface F
    {
       public String getID();
    }
    class H implements E,F
    {
        //H类如何实现
        ......... 
    }
      

  18.   

    直接答没有方法就过了, A和B中都有同样原型的方法时, 你可以认为就是这样
    B (interface)
    |
    A (class or abstract class) //这里就已经判断是否实现了
    |
    C (method是实现的那个, 如果A没有实现, 则C的就想使用就要@Override, 不然C也是abstract class)