我正在看游戏中的一些代码,我遇到了一些我以前没有见过的东西,我真的不知道发生了什么。
public abstract class Entity
{
public Entity(World world)
{
// irrelevent code
entityInit();
}
protected abstract void entityInit();
}这里发生了什么事?当它在entityInit()上调用时会发生什么
发布于 2011-10-04 15:19:23
大多数情况下,这是在Template Method pattern中使用的。Entity的子类、非抽象类将实现entityInit()方法。这些子类实现必须为该类定义其entityInit()的方式。
在维基百科上,它说...
在面向对象编程中,首先创建一个类,它提供算法设计的基本步骤。这些步骤是使用抽象方法实现的。稍后,子类将更改抽象方法以实现实际操作。因此,一般的算法保存在一个地方,但具体的步骤可能会被子类改变。
在您的例子中,您不必担心子类必须entityInit()自身,因为构造函数将在默认情况下执行此操作:
示例:
public class StrictEntity extends Entity {
public StrictEntity(World world) {
super(world); //This will call entityInit();
}
protected void entityInit() {
//Example, don't take it as genuine.
PropertyConfig.getInstance.setStrict(true);
}
}https://stackoverflow.com/questions/7644342
复制相似问题