重複の可能性:
インターフェースで保護
次のコードスニペットは、Javaのインターフェイスがパブリックである修飾子を1つだけ持つことができることを示しています。他の修飾子(プライベートおよびプロテクト)は、フィールドまたはメソッドのいずれのインターフェース内でも許可されていません。明らかに、修飾子の中で、privateはインターフェース内で使用する意味がありませんが、保護は、その実装クラスによって組み込むことができるため、インターフェース内で許可する必要があります。
interface Demo
{
private final static int a=10; //Will not be compiled.
protected final static int b=20; //Will not be compiled.
public final static int x=0; //ok
abstract public void showSum();
}
一方、抽象クラスは、すべての修飾子をprivate、public、およびprotectedにすることができます。私の質問は、保護された修飾子が、ある程度許可されているように見えるインターフェイス内では許可されていないということだけです。なんで?