考虑一个例子(在java中编译)
public abstract interface Interface { public void interfacing(); public abstract boolean interfacing(boolean really); }
为什么有必要将接口“声明”为抽象的?是否有其他适用于抽象接口的规则?
最后:如果abstract已经过时,为什么要包含在 Java 中?抽象接口有历史吗?
abstract
为什么有必要将接口“声明”为抽象的?
它不是。
public abstract interface Interface { \___.__/ | '----> Neither this... public void interfacing(); public abstract boolean interfacing(boolean really); \___.__/ | '----> nor this, are necessary. }
接口及其方法是隐式的abstract,添加该修饰符没有区别。
是否有其他适用于抽象接口的规则?
不,同样的规则适用。该方法必须由任何(具体)实现类实现。
如果 abstract 已过时,为什么它会包含在 Java 中?抽象接口有历史吗?
有趣的问题。我翻出了 JLS 的 第一版 ,甚至在那里它说 “这个修饰符已经过时,不应该在新的 Java 程序中使用” 。
好的, 进一步挖掘......在点击了许多断开的链接后,我设法找到了原始Oak 0.2 规范(或“手册”)的副本。我必须说非常有趣的阅读,总共只有 38 页!:-)
在第 5 节,接口下,它提供了以下示例:
public interface Storing { void freezeDry(Stream s) = 0; void reconstitute(Stream s) = 0; }
在边缘它说
将来,接口中声明方法的“=0”部分可能会消失。
假设=0被abstract关键字替换,我怀疑这abstract在某些时候对于接口方法是强制性的!
=0
相关文章:Java:抽象接口和抽象接口方法