多態性(ポリモーフィズム)

多態性とは

「あるものをあえてザックリ捉える」ことでメソッドを享受しようとする機能

(ex)

AnimalクラスはHumanクラスの親クラス

Animal a = new Human();

HumanインスタンスをAnimal型に代入する

作成したインスタンスを別の型として捉える機能

 

何でも箱に入れられるのか?

親子関係、つまり継承をしていないといけない

抽象クラスやインターフェイスインスタンスを生成することはできないが

変数の型としては使用することができる

 

多態性の注意点

Aの属性・操作とBの属性・操作を切り替えて使用することができる

(ex)

Animal a = new Human();

Human h = (Human) a;

のようにキャスト演算子を使えばできる

 

キャスト失敗のリスク

キャストしても大丈夫かチェックする

変数 instance of 型名

※is-a・・・継承するという意味

is-a→true

is-aでない→false

 

多態性のメリット

・配列記述の簡素化

・メソッドの引数における汎用性

 

メソッド引数における汎用性

同じ呼び出し方なのに多数の異なる状態を生み出すことがある

多態性

引数を親にすることで

→呼び出し方はザックリで処理は渡すインスタンス次第となる