多態性(ポリモーフィズム)
多態性とは
「あるものをあえてザックリ捉える」ことでメソッドを享受しようとする機能
(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
多態性のメリット
・配列記述の簡素化
・メソッドの引数における汎用性
メソッド引数における汎用性
同じ呼び出し方なのに多数の異なる状態を生み出すことがある
→多態性
引数を親にすることで
→呼び出し方はザックリで処理は渡すインスタンス次第となる