ポリモーフィズム(多態性)の特徴とは・・・
あるメソッドの呼び出しに対して、それぞれのオブジェクト毎に異なる動きを実現出来ること。
ウマ娘を例にすると
”あるメソッド”は、以下HorseGirlクラスのcallメソッドとする。
HorseGirl.java
package sample;
// ウマ娘クラス(抽象クラス)
public abstract class HorseGirl {
// トレーナーを呼ぶ!
public abstract void call();
}
これをもとに、各オブジェクトに異なる動きを与える。
AirGroove.java
package sample;
// ウマ娘クラスを継承したエアグルーヴクラス
public class AirGroove extends HorseGirl{
@Override
public void call() {
System.out.println("たわけ!");
}
}
RiceShower.java
package sample;
//ウマ娘クラスを継承したライスシャワークラス
public class RiceShower extends HorseGirl{
@Override
public void call() {
System.out.println("お兄様!");
}
}
AgnesTachyon.java
package sample;
// ウマ娘クラスを継承したアグネスタキオンクラス
public class AgnesTachyon extends HorseGirl{
@Override
public void call() {
System.out.println("モルモットくぅん!");
}
}
以下、メインクラス。
Main.java
package sample;
public class Main {
public static void main(String[] args) {
HorseGirl ag = new AirGroove();
HorseGirl rs = new RiceShower();
HorseGirl at = new AgnesTachyon();
// エアグルーヴクラスの実行
System.out.println("――エアグルーヴが呼んでるよ――");
ag.call();
System.out.println("");
// ライスシャワークラスの実行
System.out.println("――ライスシャワーが呼んでるよ――");
rs.call();
System.out.println("");
// アグネスタキオンクラスの実行
System.out.println("――アグネスタキオンが呼んでるよ――");
at.call();
System.out.println("");
}
}
この通り、同じcallメソッドを呼んでいるにも関わらずそれぞれのウマ娘(オブジェクト)が別の動きをすることが出来ることが分かる。
参考資料