インターフェースはそんなに難しいのか?
[id:lethevert:20050829:p5]
# 杏 『インターフェイスはインスタンスを生成できないはず。
なので、前者のソースはむちゃくちゃじゃないデスカ?』 (2005/08/30 11:22)
こういうコメントがつくことが、後者の実装になってしまった理由を物語っているのかも知れませんね。_| ̄|○*1
と変な納得をしてしまいましたが、もっともポピュラー(?)なオブジェクト指向言語のJavaにある標準的な機能のはずのinterfaceが、その使い方や使う意味をあまり理解されていないのではないかと、上のコメントを見て思いました。
それで、ちょっと思いついて、google:java interface]でググって見たのですが、ぜんぜん出てこない。あれ?と思ったら、[google:java インターフェースで出てきた。
上のほうのリンクを見てみると、
http://www.atmarkit.co.jp/fjava/rensai2/javaent14/javaent14.html
http://www5c.biglobe.ne.jp/~ecb/java/09_01.html
と堂々と書いてあって_| ̄|○
確かに、多重継承に期待する一部の役割を代替することはできるけど、こう書くと間違いなく誤解を招くでしょ。むしろ、下のほうが正しい認識では?(歴史的順序は逆だけど)
C++では、抽象クラスを使うことで、インターフェースを実現することができます。
いや、そういう話でもないんだ。なぜ、クラスの継承がextendsで、インターフェースの実装がimplementsと用語を変えているのかの意味を理解するべきなんだよ。
http://www.kab-studio.biz/Programing/JavaA2Z/Word/00000077.html
implementsという予約語を使用して「継承」のように実装クラスを作り、インターフェイスのメソッドを「オーバーライド」するように実装する。
この説明文にある「ように」のニュアンスを深く汲み取る必要があるのではないですか?
*1:仕事でこういうレベルの突っ込みが入ると、がっくり来るんだよな・・・。難しいことを言った方が負けになるし