Java: インタフェースのメソッドを『オーバーライドする』という表現は許されるのか?
インタフェースで定義されているメソッドについて、実装クラスでその振る舞いを具体的に記述することを一般的には『実装する』といいますが、これを『オーバーライドする』と表現してもいいのか?
いろいろ調べてみました。
公式ドキュメントの記述
少なくとも、OracleのJavaのチュートリアルでのインタフェースに関連する項目において、『override』や『overriding』という表現は一度も出てきません。
『implement(s)』という表現のみです。
(参照: http://docs.oracle.com/cd/E26537_01/tutorial/java/TOC.html )
調査したページ
- http://docs.oracle.com/javase/tutorial/java/concepts/interface.html
- http://docs.oracle.com/javase/tutorial/java/IandI/index.html
- http://download.oracle.com/javase/tutorial/java/IandI/createinterface.html
- http://download.oracle.com/javase/tutorial/java/IandI/interfaceDef.html
- http://download.oracle.com/javase/tutorial/java/IandI/usinginterface.html
- http://download.oracle.com/javase/tutorial/java/IandI/nogrow.html
- http://download.oracle.com/javase/tutorial/java/IandI/summary-interface.html
- http://download.oracle.com/javase/tutorial/java/IandI/QandE/interfaces-questions.html
英語の意味
override の意味
1〈命令・権利などを〉無視する,受け付けない; 〈決定などを〉くつがえす,無効にする.
2〈ある事が〉〈他の事に〉優先する.
(参照: http://ejje.weblio.jp/content/override )
implement の意味
1〈契約・計画などを〉履行する,実行する,実施する; 〈要求・条件・不足などを〉満たす.
2〈…に〉道具[手段]を与える.
(参照: http://ejje.weblio.jp/content/implement )
インタフェースのメソッドは定義するだけのものです。
中身は空っぽです。
ならば、実装クラスでそのメソッドの具体的な振る舞いを記述する際の表現として、
『無視して新たな振る舞いを記述する』
『インタフェースの記述よりも実装クラスでの記述を優先させる』
よりも、
『具体的な振る舞いを与える』
『インタフェースの要求を満たす振る舞いを実施する』
という表現のほうが適切ではないでしょうか?
結論
以上のことから、インタフェースの場合はオーバーライドという表現を使うべきではないと思います。
親クラスのメソッドを上書きする場合のみに使うのがふさわしいと思います。