はじめに
今回は派生クラス(サブクラス)から基底クラス(スーパークラス)のコンストラクタを呼ぶ記事になります!
これを実現する機能はC#に備わっているのですが、やや独特な表記だと個人的に思ったのでこちらに残しておきたいと思います。
やり方
基底クラスのコンストラクタを実行したいときはコンストラクタの後ろにbase()
を付けます。
ParentScript.cs
using UnityEngine; public class ParentScript { public ParentScript() { Debug.Log("基底クラスのコンストラクタ"); } }
ChildScript.cs
using UnityEngine; public class ChildScript : ParentScript { public ChildScript(): base() { } }
また基底クラスのコンストラクタが引数を持つ場合は下のように変更します。
ParentScript.cs
using UnityEngine; public class ParentScript { public ParentScript(string something) { Debug.Log("基底クラスのコンストラクタ:" + something); } }
ChildScript.cs
using UnityEngine; public class ChildScript : ParentScript { public ChildScript(string something): base(something) { } }
Hoge.cs
using UnityEngine; public class Hoge : MonoBehaviour { void Start() { ChildScript childScript = new ChildScript("はろー"); } }
さいごに
コンストラクタの継承はクラスの継承のように表記できるみたいですね。
ただメソッドの後ろに:
が付くのはやや違和感が。。。