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

类A:{a()}
接口B : {a()}
类C extends A implements B

解决方案 »

  1.   

    在类C中 用public void a()来实现接口B中的方法就行了啊,如果要调用类A中的方法就用super.a();
    class A
    {
    public void a()
    {
    System.out.println("A: a()");
    }
    }interface B
    {
    void a();
    }class C extends A implements B
    {
    public void a()
    {
    super.a();
    System.out.println("B: a()");
    }
    }
      

  2.   

    如过类A和接口B里面方法签名是一样的,那类C覆盖类A方法,自然就已经实现了类B的借口方法了。我觉得如果类A的方法和接口B的方法有相同语义。那么实现接口B不应该在类C上声明,应该在类A上声明。
      

  3.   

    使用内部类  轻松解决!class C extends A {
        @Override
        void a() {
           System.out.println("A:a()");
        }
     
        B getB() {
           return new B() {
              
               void a() {
                  System.out.println("B: a()");
               }
           };
        }
    }
      

  4.   

    举个例子了,如果Sequence.java 不使用内部类,就必须声明”Sequence是一个Selector“,
    对于某个特定的Sequence只能有一个Selector。然而使用内部类就很容易就能拥有另一个方法
    reverseSelector(),用它来生成一个反方向遍历序列的Selector。只有内部类才有这种灵活性。--------------------摘自《Thinking in java(第四版)》
      

  5.   

    要是类C extends A implements B 这种形式的,我感觉这样在继承的时候就自动实现的B接口中的a()了。
    楼上说使用内部类,感觉与这种形式不符了。
      

  6.   

    只有1个确定签名的方法,既覆盖了父类的方法,又实现了接口的方法。
    别的就别想了,java实现不了。
      

  7.   

    内部类怎么可能解决这个问题,有点听不懂??
    不继承A类,从何谈起覆盖A类的方法??不Implements接口B,如何谈气实现B接口的方法??用内部类也许既可以达到A类和B接口的功能。但是那可以叫做覆盖或者实现接口吗? 
      

  8.   

    考察内部类机制!!
    learning!
      

  9.   

    在C里面,弄个内部类,然后让类C持有这个内部类实力的引用,这样就可以说是类C实现啦接口? 这样类C能向上转型成接口B?其实内部类只是和一个普通类没啥区别就定义方式特别一下,如果内部类能作为答案,那我写一个类D,实现B接口。然后让C持有一个类D的引用。和用内部类实现有啥区别?
      

  10.   


    有道理  看如何理解题意类A:{a()}
    接口B : {a()}
    类C extends A implements B 这是楼主给出的C extends A implements B 22楼的就别讨论目的了...
      

  11.   

    6楼说的对!这个是正解,利用内部类回调
    public  class A extends B
    {
       void a1(){}
       private class X interface C{
        void a(){
           a1();
        }
       }
       public C getCallBack()
       {
         return new X();
       }
    }
      

  12.   

    内部类的拥簇者请注意,楼主的第一个命题:类C继承A实现B。以上所有列出的内部类解决方案,只是C继承A,内部类实现B,而C并没有实现B。拍砖,请继续讨论。
      

  13.   

    public  class C extends A

      void a1(){}
      private class X interface B{ 
        void a(){ 
          a1(); 
        } 
      } 
      public B getCallBack() 
      { 
        return new X(); 
      } 
    }
    我觉得楼主的意思是实现其目的 使父类不被覆盖,同时实现接口的 !
      

  14.   

    C extends A implements B  
      

  15.   


    上面的种种内部类有哪个实现同名方法实现和继承?不都是主类override A的a(),内部类实现B的a()?!!那么下面的做法(稍微修改自四楼),不也能做到?class A
    {
    public void a()
    {
    System.out.println("A: a()");
    }
    }interface B
    {
    void a();
    }class C extends A implements B
    {
    public void a()
    {
    System.out.println("B: a()");
    }//用ab()来调父类方法
    public void ab()
    {
    super.a();
    }}
    所以说,内部类也解决不了楼主的真实命题。
    孩子们,在Java世界中,这是无解的!
      

  16.   


    类A:{a()} 
    接口B : {a()} 
    类C extends A implements B 

    首先我想问下LZ,这是你自己定义的类C吗?如果不是,貌似没有办法。
      

  17.   


    类C不是我定义的!
    我想面试官可能是考我内部类的知识吧!
    不过当时他确实是这样说的,我记得很清楚,当时想了很久都想不到,也没想到内部类
    :: 一个类C继承A类 实现B类,有什么办法可以使两个方法不冲突! 注意:C类要重写A类的方法
      

  18.   

    学习了,如果像楼主说 C extends A implements B 
    写的话,java中应该没有办法吧。。
    内部类还是能解决这个问题的。。如果考虑实现重写的功能化。。
      

  19.   

    问:有什么方法使这两个a()方法不冲突??    即能覆盖类A的方法,又能实现接口B的方法??  
     
    答:要想不冲突,两个a()的返回值类型必须一样. 直接在C类中覆写a()就可以了.