Java 抽象接口
考虑一个例子(用java编译)
public abstract interface Interface {
public void interfacing();
public abstract boolean interfacing(boolean really);
}
为什么接口必须“声明”为抽象?是否有其他适用于抽象接口的规则?
最后:如果已过时,为什么它被包含在Java中?抽象界面有历史吗?abstract
考虑一个例子(用java编译)
public abstract interface Interface {
public void interfacing();
public abstract boolean interfacing(boolean really);
}
为什么接口必须“声明”为抽象?是否有其他适用于抽象接口的规则?
最后:如果已过时,为什么它被包含在Java中?抽象界面有历史吗?abstract
为什么接口必须“声明”为抽象?
事实并非如此。
public abstract interface Interface {
\___.__/
|
'----> Neither this...
public void interfacing();
public abstract boolean interfacing(boolean really);
\___.__/
|
'----> nor this, are necessary.
}
接口及其方法是隐式的,添加该修饰符没有任何区别。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
相关文章:Java:抽象接口和抽象接口方法
它不是必需的,它是可选的,就像在接口方法上一样。public
请参阅JLS:
http://java.sun.com/docs/books/jls/second_edition/html/interfaces.doc.html
9.1.1.1 抽象 接口 每个接口都是隐式抽象的。此修饰符已过时,不应在新程序中使用。
和
9.4 抽象方法声明
[...]
为了与旧版本的 Java 平台兼容,允许但不鼓励为接口中声明的方法冗余指定抽象修饰符,但出于风格考虑,这是不鼓励的。
允许(但强烈建议不要作为样式问题)为接口方法冗余指定公共修饰符。