游戏游戏与传承

问题描述 投票:0回答:2

一个菜鸟问题。我经常看到这样的事情:

        public Constructor(Game game, string effectAssetName)
        : base(game)

我实在是看不懂第二行的功能。这称为基地,但为了什么?第一行Game game不是已经定义了游戏吗?

inheritance xna
2个回答
1
投票

“基”调用确定在超类上调用哪个构造函数 - 例如如果没有 :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属性将永远不会被设置(实际上在这种情况下,在Apple上创建一个构造函数而不调用base(bool)是非法的Fruit 上的构造函数,因为 Fruit 上没有无参数构造函数)


0
投票

游戏开发经常利用继承的概念(面向对象编程的基本原则)来创建更高效和可维护的代码。通过从父类继承属性和方法,开发人员可以以更少的冗余构建复杂的游戏机制和角色。这种方法增强了可扩展性并易于更新,从而可以更快地实施新功能。对于Smartplayapks,理解和应用继承可以带来更优化、功能更丰富的APK,进一步提高应用程序性能和用户满意度。

© www.soinside.com 2019 - 2024. All rights reserved.