【问题标题】:same method signature in interface and class接口和类中的相同方法签名
【发布时间】:2014-11-16 18:04:20
【问题描述】:
interface TestInterface {
    void work();
}

class TestClass {
    public void work(){
        System.out.println("Work in CLASS");
    }
}

public class Driver extends TestClass implements TestInterface {
    public static void main(String[] args) {
        new TestClass().work();
    }
}

谁能给我解释一下,为什么仅仅因为TestClass中存在相同的工作方法签名,这个类编译得很好?

【问题讨论】:

    标签: java interface overriding extends implements


    【解决方案1】:

    实现接口的要求是类提供接口指定的所有方法的实现。 Driver 类提供了work() 所需的实现,因为它从TestClass 继承了一个完全匹配的方法。所以可以作为TestInterface的实现。

    【讨论】:

      【解决方案2】:

      这是因为接口的所有方法都实现了。 这与您可以在实现类中省略 @Override 注释的原因相同(这不是一个好的做法,因为可能会更改方法签名,并且您可能会无意中使用其他一些公共方法实现更改的方法)。

      但是,您的构造是不稳定的,因为您依赖于不知道您要签名实现的接口的 TestClass

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-01-29
        • 2018-11-04
        • 1970-01-01
        • 1970-01-01
        • 2018-01-16
        • 2011-12-13
        • 2011-02-19
        • 1970-01-01
        相关资源
        最近更新 更多