实现通用接口方法的类

时间:2014-09-01 06:08:45

标签: java interface

只有一个问题让我感到困惑...... 有两个接口A,B,它们包含相同的方法methodC()...而C类实现A& B。它应该实现哪种接口方法A或B
现在根据我的分析,我在下面说了lyk ..

 interface  A {
        /**
         * Doc A
         * **/
        public void MethodA();

        public String MethodB();

    }

    interface  B {
        /**
         * Doc B
         * **/
        public String MethodA();

        public void MethodB();
    }

    class lucy implements A,B{

        @Override
        public String MethodA() {
            //To change body of implemented methods use File | Settings | File Templates.
            return null;
        }

        @Override
        public String MethodB() {
            //To change body of implemented methods use File | Settings | File Templates.
            return null;
        }
    }

输出:

  

您好   你好

1 个答案:

答案 0 :(得分:0)

假设我们有一个界面:

public interface A {

    public void firstMethod();

    public void secondMethod();
}

和这个界面:

public interface B {

    public void firstMethod();

    public void secondMethod();
}

如果你创建了一个实现这两个接口的类,它将被编译并正常工作。

public class MyClass implements A, B {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
    }

    @Override
    public void firstMethod() {
        // some code here
    }

    @Override
    public void secondMethod() {
        // some code here
    }
}

但是,如果您将方法firstMethod()secondMethod()添加到MyClass但返回类型不同,则无法编译。

public class MyClass implements A, B {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
    }

    public String firstMethod() {
        return "";
    }

    public String secondMethod() {
        return "";
    }

    @Override
    public void firstMethod() {
        // some code here
    }

    @Override
    public void secondMethod() {
        // some code here
    }
}

要编写方法签名,Java使用方法参数,但不使用返回类型。并且它将导致"方法已经定义"错误。因为从Java的观点来看,方法:void firstMethod();String firstMethod();secondMethod()方法相同)具有相同的签名。