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年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。
学生時代は趣味と実益を兼ねてリゾートバイトにいそしむ。長野県白馬村に始まり、志賀高原でのスキーインストラクター、沖縄石垣島、北海道トマム。高じてオーストラリアのゴールドコーストでツアーガイドなど。現在は野菜作りにはまっている。
最新の投稿
山崎講師2025年12月28日新人エンジニアが潰れる前に!研修講師が知るべき「コルチゾール」の正体と付き合い方
山崎講師2025年12月28日【フリーランス講師必読】代わりはいない!?「3大疾病」のリスクと備えを徹底解説
山崎講師2025年12月28日【数学嫌い克服】対数の「底の変換公式」とは?新人エンジニアが知るべき自由自在な計算術
山崎講師2025年12月28日【初心者必見】対数関数は指数関数の逆関数!新人エンジニアが知るべき数学の基礎