【Unity開発】継承まとめ② virtualとoverride【ひよこエッセンス】
Unity5.0.0f4 Personal(2015年5月)
ひよこエッセンスの時間です〜
前回に引き続き、継承について書いていきたいと思います〜
今回はvirtual修飾子とoverride修飾子についてです〜
継承まとめ② virtualとoverride
①継承失敗の例
Animalクラスを継承したHiyokoクラスを載せたスクリプトを作りましたので、以下のスクリプトをCubeに貼り付けて下さい〜
Animalクラスをインスタンス化しAnimalFunctionメソッドを実行した例と、Hiyokoクラスをインスタンス化しAnimalFunctionメソッドを実行した例と、最後が少し分かりにくいのですが、HiyokoクラスをAnimalクラス型でインスタンス化(継承してるので可能)し、AnimalFunctionメソッドを実行した例が載っています〜
最後の例はHiyokoクラスをインスタンス化しているので「ひよこクラスです」という文字を表示してほしいのですが、実際はAnimalクラスのメソッドが実行されてしまいます〜
思ってたのと違う・・・
これを期待通りの形にするために、virtualとoverrideを使います〜
②virtualとoverride
この場合期待通りの形にするためには、スーパークラスのメソッドにvirtual修飾子を、サブクラスのメソッドにoverride修飾子を付ける必要があります〜先ほどのスクリプトを修正しましょう〜
こうすることで、サブクラス独自の変数やメソッドを利用することができるようになります〜
サブクラスのメソッドがちゃんと呼ばれた
同じAnimalクラス型を使っているけど結果が違います〜こういうのを、多態性(ポリモーフィズム)というようです〜
以上、ひよこエッセンスでした〜
ありがとうございました〜