Java抽象界面

问题:

考虑一个例子(在java中编译)

public abstract interface Interface {
    public void interfacing();
    public abstract boolean interfacing(boolean really);
}

为什么接口必须被“声明”为抽象?是否有其他适用于抽象界面的规则?
最后:如果abstract已经过时,为什么它被包含在Java中?有抽象界面的历史吗?

回答:

为什么接口必须被“声明”为抽象?

不是。

public abstract interface Interface {
       \___.__/
           |
           '----> Neither this...

    public void interfacing();
    public abstract boolean interfacing(boolean really);
           \___.__/
               |
               '----> nor this, are necessary.
}

接口和它们的方法是隐式abstract,并且添加该修饰符没有什么区别。

是否有其他适用于抽象界面的规则?

不,规则适用。该方法必须由任何(具体)实现类实现。

如果抽象是过时的,为什么它包含在Java中?有抽象界面的历史吗?

有趣的问题我挖了JLS的first版,甚至说“This modifier is obsolete and should not be used in new Java programs”
好吧,进一步挖掘 …在打破了许多破碎的链接之后,我设法找到原来的Oak 0.2 Specification(或“手册”)的副本。非常有趣的阅读我必须说,总共只有38页! 🙂
在第5节“接口”下,它提供了以下示例:

public interface Storing {
    void freezeDry(Stream s) = 0;
    void reconstitute(Stream s) = 0;
}

在它说的边缘

 In the future, the ” =0″ part of declaring methods in interfaces may go away.

假设=0abstract关键字取代,我怀疑abstract在某种程度上是界面方法的强制性!
相关文章:Java: Abstract interfaces and abstract interface methods

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: Java abstract interface

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

88 + = 92