Unity(C#)初心者・入門者向けチュートリアル ひよこのたまご

AndroidやiOS向けアプリを簡単に作れるゲーム開発環境Unity(ユニティ)の使い方を、チュートリアル方式で一緒に学びましょう!

【Unity開発】継承まとめ② virtualとoverride【ひよこエッセンス】

Unity5.0.0f4 Personal(2015年5月)

 

f:id:hiyotama:20150504205926p:plain

 

ひよこエッセンスの時間です〜

前回に引き続き、継承について書いていきたいと思います〜

今回はvirtual修飾子とoverride修飾子についてです〜

 

 継承まとめ② virtualとoverride

①継承失敗の例

Animalクラスを継承したHiyokoクラスを載せたスクリプトを作りましたので、以下のスクリプトをCubeに貼り付けて下さい〜

 

 

Animalクラスをインスタンス化しAnimalFunctionメソッドを実行した例と、Hiyokoクラスをインスタンス化しAnimalFunctionメソッドを実行した例と、最後が少し分かりにくいのですが、HiyokoクラスをAnimalクラス型でインスタンス化(継承してるので可能)し、AnimalFunctionメソッドを実行した例が載っています〜

 

最後の例はHiyokoクラスをインスタンス化しているので「ひよこクラスです」という文字を表示してほしいのですが、実際はAnimalクラスのメソッドが実行されてしまいます〜

 

f:id:hiyotama:20150527135401p:plain

思ってたのと違う・・・

 

これを期待通りの形にするために、virtualとoverrideを使います〜

 

②virtualとoverride

この場合期待通りの形にするためには、スーパークラスのメソッドにvirtual修飾子を、サブクラスのメソッドにoverride修飾子を付ける必要があります〜先ほどのスクリプトを修正しましょう〜

 

 

こうすることで、サブクラス独自の変数やメソッドを利用することができるようになります〜

 

f:id:hiyotama:20150527140805p:plain

サブクラスのメソッドがちゃんと呼ばれた

 

同じAnimalクラス型を使っているけど結果が違います〜こういうのを、多態性(ポリモーフィズム)というようです〜

 

以上、ひよこエッセンスでした〜

ありがとうございました〜