Java - принудительная реализация реализованного метода - PullRequest
4 голосов
/ 13 марта 2012

У меня есть три класса, с которыми у меня проблема.Они называются: 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
    }
}

Ответы [ 2 ]

7 голосов
/ 13 марта 2012

вы можете сделать это с помощью обертки:

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
    }
}
1 голос
/ 13 марта 2012

Вы можете разбить его на два отдельных метода

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
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...