如何使用設計模式定義抽象類中的抽象方法,而某些方法的方法將可能到覆蓋或更改它在子類中的行爲? 在這個例子中,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