Java 为什么在接口中允许实现

Java 为什么在接口中允许实现,java,interface,static,inner-classes,Java,Interface,Static,Inner Classes,可能重复: 我想知道为什么接口不允许静态块,但允许声明静态变量。 如果我想初始化某个逻辑上的静态变量呢 编辑:之前我没有以更好的形式发布我的查询,但这是我的查询,带有示例代码。请调查一下 interface A { static class XYZ { public static void methodA() { // some implementation System.out.println("methodA");

可能重复:

我想知道为什么接口不允许静态块,但允许声明静态变量。 如果我想初始化某个逻辑上的静态变量呢

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

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

    }
}
因为接口的目的是提供一种机制,接口的用户/实现者可以根据自己的需要实现属性(方法)。
但是,如果我被允许在接口中添加实现,那么接口的目的是如何被破坏的,请让我清楚为什么允许在接口中进行此实现,一定有一些原因和事实,这就是我想知道的,他们设计的接口不允许实现;静态块将构成一个实现,因此它是不允许的。

是的,他们这样做了。他们,你指的是Java之父。但我们可以在接口中的内部类方法中进行实现。我认为,为什么接口不允许静态块,但允许声明静态变量的答案可能会在第二个重复问题中被@peterk注释。这是理想的,不是技术的。