ユーチューブ動画
インターフェースの配列について解説します。
ソースコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
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タッチタイプゲームとして遊ぶことができます。