046-インタフェース-インタフェースの配列 【新人エンジニアが最初に覚えたい100のJava文法】
ユーチューブ動画
インタフェースの配列について解説します。
ソースコード
interface Special { int SPECIAL_POINT_BASE = 10; void showSpecial(); } class Note implements Special { public void showSpecial() { System.out.println((SPECIAL_POINT_BASE * 2) + "point"); } } class Ball implements Special { public void showSpecial() { System.out.println(SPECIAL_POINT_BASE + "point"); } } public class MainClass { public static void main(String[] args) { Special[] specialList = { new Note(), new Ball() }; for(Special product : specialList){ product.showSpecial(); } } }
解説
インタフェースの配列について解説します。
スーパークラスの変数に、サブクラスのインスタンスが代入できる、
インタフェースの変数に、実装したクラスのインスタンスが代入できる
と、この2点を確実に覚えておければ、ここからの話も楽になると思います。
また、インスタンスをグループ化するようなものだというイメージも大切です。
サンプルコードで確認します。
ここではmainメソッドを中心に確認していきましょう。
インタフェースの変数に、実装したクラスのインスタンスが代入できますから、
Specialインタフェースの型の配列には、実装したクラスのインスタンスが格納できるということになります。
これらはハテナと感じるよりも、そういう性質ということで、覚えてしまいましょう。
配列ができたら、あとはこっちのものです。拡張for文などを使って、
オーバーライドされたメソッドを呼び出すと、ポリモーフィズムが実現されます。
呼び出したインスタンスの種類に応じた振る舞いを実行できます。
ここでは、Noteクラスのインスタンスが20point,、Ballクラス側のインスタンスが10pointと表示されます。
このようにインスタンスを配列にし、グループ化して、まとめて処理させるときには、
継承を使うか、インタフェースを使うか悩むかもしれません。
インタフェースの方が、複数実装できるので、好んで使うという方もいらっしゃいます。
いずれにしても、オーバーライドとポリモーフィズムをセットで覚えて、それを実現する方法には、
継承やインタフェースがあると整理できれば、このあたりの知識としては大丈夫です。
以上、インタフェースの配列について解説しました。
このサンプルコードをJavaタッチタイプゲームとして遊ぶことができます。