【问题标题】:A class implementing common method of interface实现接口常用方法的类
【发布时间】:2014-10-25 07:43:25
【问题描述】:

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

 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;
        }
    }

输出:

你好 你好

【问题讨论】:

  • 它不会编译。我不知道你是怎么得到那个输出的。
  • @LuiggiMendoza 忘记了代码,因为它是原始编码的,主要关注的是概念
  • 再次:这不会编译,这就是为什么这个问题很奇怪。测试一下。
  • 这有关系吗?来自 A 或 B 的方法没有实现。
  • 是的,这很重要。因为如果你测试它,编译器会给你答案:你不能。

标签: java interface


【解决方案1】:

假设我们有一个接口:

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() 方法相同)具有相同的签名。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-12
    • 2016-02-19
    • 2011-05-16
    • 2020-02-04
    • 2020-04-02
    • 1970-01-01
    • 2017-08-21
    • 1970-01-01
    相关资源
    最近更新 更多