0

如何使用设计模式在抽象类中定义抽象方法,而某些方法方法可能会覆盖或更改其在子类中的行为?在这个例子中,public abstract class GameCharacterattack一个应该是模式的方法(定义一些方法,GameCharacter一些留空,在子类中被*覆盖*)。

public abstract class GameCharacter{

public void attack(GameCharacter opponent){

while(opponent.hitPoints > 0 && this.hitPoints > 0){

// some abstract method which behavior can be *redefined* 
//if specific class is *overrides* 
// some of this functions
// it should be pattern design

public void doDamageToOpponent{ 

doAttackOne(){ .... }; // cannot change
doAttackTwo(); // can change, be overridden in child class

}

public void doDamageToThis{ // counterattack

doAttackOne(){ .... }; // cannot change
doAttackTwo(); // can change, be overriden in child class

}

}
4

2 回答 2

2

我想你想要的是这样的:

public abstract class GameCharacter{

    protected abstract doAttackTwo();

    protected final doAttackOne() { ... implement here ... }

    ...
}

doAttackTwo()必须由子类实现,doAttackOne()而不能被覆盖。

于 2012-04-15T12:47:07.640 回答
0

如果您声明一个方法,因为final它不能在子类中被覆盖。当然,如果你不给一个方法一个定义,那么任何(具体的)子类都必须实现它。

于 2012-04-15T12:45:37.327 回答