0

たとえば、次のインターフェイスがあります。

public Interface A {
    String CONST = "someText";
}

Aのようなインターフェイスをアセンブルできるようなことをしたいのですが、アセンブラインターフェイスが次のような親インターフェイスのメンバーをオーバーライドできるようにしたくありません。

public Interface Assembler {
    String CONST = "someText"; // there isn't any error
}

解決策を提案できますか?

ありがとう!

編集:親のインターフェースからフィールドをオーバーラップすることを拒否するにはどうすればよいですか?(同じ名前の子インターフェイスでフィールドを使用すると、コンパイラはエラーを表示します)

4

1 に答える 1

5

static(あなたの場合のように)フィールドであろうとインスタンスフィールドであろうと、フィールドを上書きすることはできません。できることはそれらをシャドウイングすることだけですが、それは名前空間の問題にすぎません。タイプ名による明示的な修飾によって、すべてのフィールドが使用可能になります。

オーバーライドが必要な場合は常に、インスタンスメソッドが必要です。あなたの場合、適切な文字列値を返すメソッドを導入してください。ただし、インターフェイスに実装することはできません。

于 2012-12-10T14:19:13.037 に答える