インターフェイスを抽象的に「宣言」する必要があるのはなぜですか?
そうではありません。
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:抽象インターフェースと抽象インターフェースメソッド