1
1    public interface Word { boolean isSpelled(String w); }
2    
3    abstract class Verb3 implements Word {
4       boolean isSpelled(String w) { return true;}
5    }

OCJP模擬試験の問題です。上記のコードは 4 行目でエラーを返し、Verb3 クラスがより弱いアクセス権限を isSpelled() メソッドに割り当てようとして失敗したという回答が返されます。

誰がそれが何を意味するか知っていますか?

また、インターフェースを実装する場合、アクセス権はインターフェースで宣言されているメソッドに依存するべきではありませんか? 例えば、

1    public interface Word { public boolean isSpelled(String w); }

public または default (この場合はアクセス修飾子なし) を使用すると、メソッドにアクセスまたはオーバーライドできます。私が間違っている場合は、私を修正してください。ありがとう。

4

1 に答える 1

5

インターフェイスでメソッドを宣言すると、publicデフォルトでメソッドが宣言されます。ただし、任意のクラスで定義すると、アクセス修飾子を指定しない場合と同じようになりますdefault。インターフェイスを実装している間は、オーバーライドされたメソッドに弱いアクセスを割り当てることはできません。インターフェイス メソッドを実装する場合は、宣言する必要がありますpublic

于 2013-11-07T05:44:25.863 に答える