【Unity開発】継承まとめ③ abstract【ひよこエッセンス】
Unity5.0.0f4 Personal(2015年5月)
ひよこエッセンスの時間です〜
今回は抽象クラスに付ける、abstract修飾子についてです〜
継承まとめ③ abstract
①抽象クラスとは
abstractという修飾子を付けることで、クラスは抽象クラスとなります〜
抽象クラスは継承して使われることを前提としているため、インスタンス化することはできません〜Unityでいうと、オブジェクトにスクリプトを付けるとインスタンス化したことになるので、オブジェクトにスクリプトを付けられないという意味です〜
抽象クラスの中では、抽象メソッドというメソッドを定義することができます〜
②抽象メソッドとは
抽象メソッドとは、抽象クラスを継承した全てのサブクラスで共通して使えるメソッドです〜こちらにも抽象クラス同様、abstract修飾子を付けましょう〜
抽象メソッドには中身がありません〜どういうことかと言いますと、普通メソッドは「{ }」でかこって中に処理を書きますが、抽象メソッドにはそれがないです〜
ではメソッドの処理はどこに書けばいいのかと言いますと、継承したサブクラス内で同名のメソッドを作成し、そこに記述して下さい〜
抽象メソッドは暗黙的にvirtual修飾子を持つため、抽象メソッドを継承したメソッドにはoverride修飾子を付けておく必要があります〜
なんでこんなものがあるのかというと、抽象クラスを継承した全てのサブクラスに必ず実装してほしいメソッドを明確にしておくためです〜仮に抽象クラスを継承したサブクラスの中に抽象メソッドを記述していないものがある場合、エラーとなります〜
・・・長々と申し訳ありませんでした〜具体例に移りたいと思います〜
③抽象クラスの具体例
まずは抽象クラスであるAbstractScriptを作成しましょう〜
かなりシンプルな例ですが・・・抽象クラスAbstractScriptに、抽象メソッドNakigoeを加えたのみとなっております〜
次に作る2つのスクリプトは両方とも抽象クラスであるAbstractScriptを継承していますので、必ず抽象メソッドNakigoeが無ければなりません〜では、まずはHiyokoScriptから〜
AbstractScriptを継承し、override修飾子を付けたNakigoeメソッドを実行しております〜
適当に黄色いCubeを作りHiyokoと名付け、HiyokoScriptを付けます〜
Hiyoko
もうひとつSaruScriptも作りましたので以下に載せます〜
こちらも鳴き声が違うだけで同じ内容となっております〜
同じように茶色いCubeを作り名前をSaruとし、SaruScriptを付けます〜
HiyokoとSaru
これらを一回実行してみたいと思います〜
うまくいきました〜
ちなみにAbstractScriptクラスを継承したにも関わらずNakigoeメソッドを書かなかった場合、以下のようなエラーメッセージがでてきます〜
Nakigoeメソッドを使って下さいというエラー
以上、ひよこエッセンスでした〜
ありがとうございました〜