1つの初心者の質問。私はよくそのようなものを見ます:
public Constructor(Game game, string effectAssetName)
: base(game)
私は本当に2行目の機能を理解することはできません。これはベースと呼ばれますが、何のために?ゲームはゲームゲームの最初の行ですでに定義されていませんか?
1つの初心者の質問。私はよくそのようなものを見ます:
public Constructor(Game game, string effectAssetName)
: base(game)
私は本当に2行目の機能を理解することはできません。これはベースと呼ばれますが、何のために?ゲームはゲームゲームの最初の行ですでに定義されていませんか?
「base」呼び出しは、スーパークラスで呼び出すコンストラクターを決定します。たとえば、:base(game)がないと、スーパークラスは初期化されません(正確には、特定のコンストラクターは実行されませんが、使用可能なコンストラクターがある場合は、パラメーターなしのコンストラクターが実行される可能性があります)。 )。
通常、Gameクラスをサブクラス化すると、独自の機能が追加されますが、それでもGameクラスを初期化して、独自の機能を実装する必要があります。基本的に次の呼び出しを行っています
MyGameObject.Constructor(game, effectAssetName)
と
Game.Constructor(game);
さらに(悪い:))例
class Fruit
{
private bool _hasPips;
public Fruit(bool hasPips)
{
_hasPips = hasPips;
}
}
class Apple : Fruit
{
private bool _isGreen;
public Apple(bool isGreen, bool hasPips) : base(hasPips)
{
_isGreen = isGreen;
}
}
新しいAppleを作成するとき、base(hasPips)の呼び出しが行われます。これがないと、FruitスーパークラスのhasPipsプロパティが設定されません(実際、この場合、base(bool)コンストラクターを呼び出さずにAppleでコンストラクターを作成することは違法です。 Fruitにはパラメーターなしのコンストラクターがないため、Fruitに)