一个菜鸟问题。我经常看到这样的事情:
public Constructor(Game game, string effectAssetName)
: base(game)
我实在是看不懂第二行的功能。这称为基地,但为了什么?第一行Game game不是已经定义了游戏吗?
“基”调用确定在超类上调用哪个构造函数 - 例如如果没有 :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 上没有无参数构造函数)
游戏开发经常利用继承的概念(面向对象编程的基本原则)来创建更高效和可维护的代码。通过从父类继承属性和方法,开发人员可以以更少的冗余构建复杂的游戏机制和角色。这种方法增强了可扩展性并易于更新,从而可以更快地实施新功能。对于Smartplayapks,理解和应用继承可以带来更优化、功能更丰富的APK,进一步提高应用程序性能和用户满意度。