045-インタフェース-インタフェースとポリモーフィズム 【新人エンジニアが最初に覚えたい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 item = new Note(); Special item2 = new Ball(); item.showSpecial(); item2.showSpecial(); } }
解説
インタフェースとポリモーフィズムについて解説します。
継承でもポリモーフィズムを実現できますが、インタフェースでも実現することができます。
Javaは単一継承ですから、インターフェースを利用した方が柔軟性があり、メリットがあるといえます。
サンプルコードで確認しましょう。
インタフェースSpecialが定義されています。
インタフェースでは、定数と抽象メソッドが定義できます。
定数として、SPECAIL_POINT_BASE=10、抽象メソッドとして、showSpecialメソッドが定義されています。
インタフェースを実装している側は、NoteクラスとBallクラスです。
これだけすでにSPECAIL_POINT_BASEという定数がクラス内で利用できるようになります。
定数を使い回しするときにもインタフェースが便利ですね。
さて、インタフェースを実装すると、抽象メソッドをオーバーライドしなければいけないというルールが発動されます。
よって、2つのクラスでは、オーバーライドされています。
Noteクラスでは、定数を2倍にした形、Ballクラスでは、定数を表示した形になっています。
インタフェースを実装すると、インターフェースをデータ型にした変数に代入することができるようになります。
すると、NoteクラスとBallクラスのインスタンスは、同じくSpecialというデータ型の変数に代入することができます。
さらに、インタフェースで定義された抽象メソッドにアクセスすることができます。
よって、item.showSpecial()、item2.showSpecial()とアクセスできます。
インタフェースの変数は、インタフェースで定義された範囲でしかアクセスできないという点を押さえておきましょう。
実行してみましょう。
結果は、Noteクラス側のitem.showSpecial()が20point,、Ballクラス側のitem2.showSpecial()が10pointと表示されます。
ポリモーフィズムによって、同じメソッドで振る舞いを変えることができたということになります。
いかがでしたか?
インタフェース・オーバーライド・ポリモーフィズムはセットで覚えてしまいましょう。
以上、インタフェースとポリモーフィズムについて解説しました。
このサンプルコードをJavaタッチタイプゲームとして遊ぶことができます。
投稿者プロフィール
-
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。
最新の投稿
- 新人エンジニア研修講師2024年12月25日IT技術者の副業としての研修講師の魅力とは?
- 新人エンジニア研修講師2024年12月25日IT技術者の定年後のお仕事としての研修講師の魅力とは?
- 全ての社員2024年12月25日TOEICでよく出てくる意外な意味で使われる英単語 50連発
- 新人エンジニア研修講師2024年12月25日新人エンジニア研修使える「アイスブレイク集」 45連発