死者を蘇らせてごめんなさい。しかし、私は仕様のこのセクションが何を述べているのかまだ明確に理解していません。
インターフェイスに直接のスーパーインターフェイスがない場合、インターフェイスは、署名 s、戻り値の型 r、および throws 句 t を持つ各パブリック インスタンス メソッド m に対応する、シグネチャ s、戻り値の型 r、および throws 句 t を持つパブリック抽象メンバー メソッド m を暗黙的に宣言します。ただし、同じシグネチャ、同じ戻り値の型、および互換性のある throws 句を持つメソッドがインターフェイスによって明示的に宣言されている場合を除きます。m が Object で final として宣言されている場合に、インターフェイスがそのようなメソッド m を明示的に宣言すると、コンパイル時エラーになります。
与えられた
interface Testing
{
void test();
}
public class Test{
public static void main(String[] args) {
Testing t = new Testing(){
@Override
public void test(){
}
};
t.test();
t.toString();
}
}
仕様に記載されているように、上記は次のように変更されます
interface Testing
{
void test();
String toString();
//other non-final methods of Object
}
public class Test{
public static void main(String[] args) {
Testing t = new Testing(){
@Override
public void test(){
}
};
t.test();
t.toString();
}
}
また。インターフェイスの階層があるかどうかを確認してください。すべてのインターフェイスがこれらの抽象メソッドを取得します。