【问题标题】:Java - Force implementation of an implemented methodJava - 强制实现已实现的方法
【发布时间】:2012-03-29 08:40:47
【问题描述】:

我有三个问题。它们被命名为:GameScene、StageScene、StageOne。我的问题是我想在 StageScene 中实现初始化,但仍然强制 StageOne 实现它,这样每当有人使用 StageOne 对象 (stageOne.initialize()) 时,都会为 StageScene 和 StageOne 运行初始化。有谁知道这是怎么做到的?

public abstract class GameScene 
{
    public abstract void initialize();
}

public abstract class StageScene extends GameScene
{
    public abstract void initialize()
    {
        //Some code
    }
}
public class StageOne extends StageScene
{
    public void initialize()
    {
        //Some code
    }
}

【问题讨论】:

  • 谢谢,这个问题帮助我思考我正在处理的设计问题

标签: java inheritance methods structure abstract


【解决方案1】:

你可以用包装器做到这一点:

public abstract class StageScene extends GameScene
{
    final public void initialize()
    {
        //your initialization
        subInitialize();
    }

    protected abstract void subInitialize();
}

在子类中:

public class StageOne extends StageScene
{
    public void subInitialize()
    {
        //Some code
    }
}

【讨论】:

  • @assylias - 当然。对原始代码做了最小的改动,但你是对的。
【解决方案2】:

你可以把它分成两个独立的方法

public abstract class GameScene 
{
    public abstract void initializeScene();
    public abstract void initializeStage();
}

public abstract class StageScene extends GameScene
{
    public void initializeScene()
    {
        //Some code
    }
}
public class StageOne extends StageScene
{
    public void initializeStage()
    {
        //Some code
    }
}

【讨论】:

    最近更新 更多