🎃

ぽりもーふぃずむ

に公開

*厳密でなければごめんなさい。黒本参照。

ぽりもーふぃずむ。難しいですよね。語感はいいけど。

ポリモーフィズムは多態性とも呼ばれて、要は同じメソッドを呼び出しても、インスタンスごとに違う動きをするよ、ということです。

前提として、親クラスの型の変数は、子クラスのインスタンスも代入することができます。
例えば、SuperHeroクラスがHeroクラスを継承している場合

HeroTest.java
Hero h = new SuperHero();

これはオッケーです。SuperHeroもHeroも、Heroであることに変わりはないですもんね。

これを踏まえて

Animal.java
    public class Animal {
        public void sound() {
            System.out.println("へいへい");
        }
    }
Dog.java
public class Dog extends Animal {
    @Override
    public void sound() {
        System.out.println("ワンワン!");
    }
}
Cat.java
public class Cat extends Animal {
    @Override
    public void sound() {
        System.out.println("ニャーニャー");
    }
}
Main.java
public class Main {
    public static void main(String[] args) {
        Animal d = new Dog();
        Animal c = new Cat();
        d.sound();//→ワンワン!
        c.sound();//→ニャーニャー
    }
}

ね? 同じAnimal型のはずなのに、インスタンスによって違う鳴き声を出しました!

これが多態性の基本的な考え方です。同じメソッドで個々のインスタンスがそれに応じた最適な動きをするのは、楽ちんですよね。

ポリモーフィズム大好き!

*年端もいかない文系の若造の戯言です。ご意見ご助言があれば遠慮なくお申し付けください。

Discussion