【问题标题】:why implementation is allowed with in interface [duplicate]为什么在接口中允许实现[重复]
【发布时间】:2012-12-26 21:41:41
【问题描述】:

可能重复:
Why no static methods in Interfaces, but static fields and inner classes OK?

我想知道为什么接口不允许静态块,但他们允许声明静态变量。 如果我想在某些逻辑上初始化一个静态变量怎么办。

编辑:之前我没有以更好的形式发布我的查询,但这是我的示例代码查询。请调查一下。

interface A {
    static class XYZ {
        public static void methodA() {
            // some implementation
            System.out.println("methodA");
        }

        public static void methodB() {
            // some more implementation
            System.out.println("methodB");
        }
    }

    void methodC();
}

public class ABC implements A {
    public static void main(String[] args) {
        A.XYZ.methodA();
    }

    @Override
    public void methodC() {
        // TODO Auto-generated method stub

    }
}

由于接口的目的是提供一种机制,接口的用户/实现者可以根据需要实现属性(方法)。 但是,如果我被允许在接口中添加实现,那么接口的目的是如何被打败的,请让我清楚为什么允许接口中的这​​种实现,一定有什么是为什么和那个事实是什么,这就是我想知道

【问题讨论】:

  • 我认为为什么接口不允许静态块,但它们允许声明静态变量的答案可以在@peterk 的第二个重复问题中进行评论。这是理念而非技术。

标签: java interface static inner-classes


【解决方案1】:

他们设计的接口不允许实现;静态块将构成一个实现,因此是不允许的。

【讨论】:

  • 是的,他们做到了。他们,你的意思是 Java 之父。
  • 但是我们可以在接口的内部类的方法中实现。
猜你喜欢
  • 2011-08-18
  • 2016-10-06
  • 2011-05-27
  • 2017-10-14
  • 2016-04-27
  • 1970-01-01
  • 2019-03-08
  • 1970-01-01
相关资源
最近更新 更多