抽象メソッドを実装?オーバーライド?
interface IFoo{ void bar(); } class Foo implements IFoo { }
コンパイラに怒られる。
C:\tmp\>javac Foo.java Foo.java:4: Foo は abstract でなく、IFoo 内の abstract メソッド bar() をオーバー ライドしません。 class Foo implements IFoo { ^ エラー 1 個
インターフェイスの抽象メソッドって、クラスで「実装する」でなく「オーバーライドする」と言うものだろうか?
シグネチャはオーバーライド、中身は実装と考えると、どちらの言葉も使えるような気はするが、「抽象クラスの抽象メソッドをサブクラスでオーバーライドする」は違和感がないが、「インターフェイスの抽象メソッドをクラスでオーバーライドする」は何だか違和感が。。。
9 Interfaces
http://java.sun.com/docs/books/jls/third_edition/html/interfaces.html
9 インターフェイス
http://www.y-adagio.com/public/standards/tr_javalang/9.doc.htm
8.4.8 Inheritance, Overriding, and Hiding
http://java.sun.com/docs/books/jls/third_edition/html/classes.html#8.4.8
8.4.6 継承,上書き及び隠ぺい
http://www.y-adagio.com/public/standards/tr_javalang/8.doc.htm#228745