首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >抽象类正在使用它自己的抽象方法?

抽象类正在使用它自己的抽象方法?
EN

Stack Overflow用户
提问于 2011-10-04 15:05:54
回答 7查看 1.9K关注 0票数 3

我正在看游戏中的一些代码,我遇到了一些我以前没有见过的东西,我真的不知道发生了什么。

代码语言:javascript
运行
复制
public abstract class Entity
{

    public Entity(World world)
    {
        // irrelevent code
        entityInit();
    }

    protected abstract void entityInit();
}

这里发生了什么事?当它在entityInit()上调用时会发生什么

EN

Stack Overflow用户

发布于 2011-10-04 15:19:23

大多数情况下,这是在Template Method pattern中使用的。Entity的子类、非抽象类将实现entityInit()方法。这些子类实现必须为该类定义其entityInit()的方式。

在维基百科上,它说...

在面向对象编程中,首先创建一个类,它提供算法设计的基本步骤。这些步骤是使用抽象方法实现的。稍后,子类将更改抽象方法以实现实际操作。因此,一般的算法保存在一个地方,但具体的步骤可能会被子类改变。

在您的例子中,您不必担心子类必须entityInit()自身,因为构造函数将在默认情况下执行此操作:

示例:

代码语言:javascript
运行
复制
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);
    }
}
票数 2
EN
查看全部 7 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7644342

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档