关于java:为什么在接口中允许实现

why implementation is allowed with in interface

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Why no static methods in Interfaces, but static fields and inner classes OK?

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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

    }
}

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


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