如何使用设计模式定义抽象类中的抽象方法,而某些方法的方法将可能到覆盖或更改它在子类中的行为? 在这个例子中,public abstract class GameCharacter
有方法attack
这应该是模式像(定义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
}
}
为什么* protected abstract doAttackTwo(); *是否受保护? – 2012-04-15 12:49:53
'protected'表示只有这个类'GameCharacter'及其所有子类都可以访问该方法,因此它受到来自代码中其他点的访问的“保护”。如果你不想要这个,你可以将它们声明为“public”;在这种情况下,您可以从代码中的每个点调用这两种方法。一般来说,如果你真的需要拥有它,那么只允许访问成员是明智的,所以我使用'protected'而不是'public'。 – Anthales 2012-04-15 12:52:30
保护也可以从同一包中的任何类访问,即使它们不是GameCharacter的子类。 – assylias 2012-04-15 12:56:51