2016-04-29 29 views
-3

第一個Java文件:如何從另一個Java文件獲取值?

public class Swordsman extends Beginner { 
    public String attFunc; 
    public String attSkill; 
    private String nickname; 
    private int power; 
    private int result; 

    public void setnickname(String nickname) { 
     this.nickname = nickname; 
    } 

    public void setpower(int power) { 
     this.power = power; 
    } 

    public Swordsman(int p, String nm) { 
     setnickname(nm); 
     setpower(p); 
      /*nickname=nm; 
      *power=p; 
      */ 
    } 

    public String nickname() { 
     return nickname; 
    } 

    public int power() { 
     return power; 
    } 

    public int result() { 
     if (power >= bpower) { 
      result = 1; 
     } else if (power < bpower) { 
      result = 0; 
     } 
    } 
} 

二的Java文件:

public class Boss { 
    public int bpower(){ 
     return bpower; 
    } 
} 

編譯錯誤:

.\Swordsman.java:32: error: cannot find symbol 
     }else if(power<bpower){ 

正如你看到的,我喜歡存取權限從第二的Java文件bpower在第一個Java文件。我怎樣才能做到這一點?

回答

7

我對理解這個問題有很多麻煩。看起來你缺乏java的基本概念以及面向對象編程。

我會盡量解釋:

  • 你有一個類Swordsman,它可以被實例化來創建劍客對象。這些對象只會看到它自己的內容。

  • 你有一個類Boss,它完全站在它自己。並可以實例化創建Boss對象。

  • 如果您想要訪問存儲在Boss對象中的任何值,通常使用getter和setter方法。你已經擁有了(吸氣者)。請注意,您通常希望按照慣例命名這些方法,如getBpower()。你在某些方法上做到了這一點,但忘記了其他方法。

  • 要真正能夠使用該方法,您需要將該類導入到您的目標類中,例如import Boss;然後,您需要從某處獲取該對象的實例(通過將其作爲參數傳遞給它)創建它重新像Boss currentBoss = new Boss();然後你就可以訪問你的價值就像currentBoss.getBpower();

  • 老闆級但是沒有制定者的bpower和構造函數,在其中設置一些默認值bpower。所以現在的老闆班是完全無用的bpower不能有一個有效的int值。

  • There在架構方面也有很大的改進空間。你正在開始god class。你的劍客課程開始做的東西,你可能不會指望它做。就像計算戰鬥的結果一樣。順便說一句:一個好習慣是在他們所做的事情上命名方法。所以result聽起來像屬性名稱(名詞),而它是一個方法(動詞)。所以getResult()會有一定的意義,更好的是boolean isFightAgainstEnemySuccessful(Enemy)

    • 但是,您可能需要考慮將戰鬥邏輯編碼到角色類中。這些東西在所有角色繼承的普通類中都是最好的(這裏是初學者)。
    • 或者,您甚至可以通過創建單例FightingMachine類來提供一些實用方法,如boolean FightingMachine.isCharacterWinningAgainstEnemy(Character, Enemy)
  • 作爲一條經驗法則:如果你將一個能力編碼成一個似乎令人驚訝的類,那麼它可能是錯誤的。對於一個RPG來說,我認爲這個東西的外殼是某種gameState。如果需要的話,它可以控制和存儲環境,角色和敵人併發起戰鬥。而不是相反。

我的實際主張是在嘗試編寫角色扮演遊戲之前,實際學習java的概念。那時你會有更多樂趣。我承諾!

+0

*「在嘗試編碼之前實際學習java的概念[...]」*這可以在很多問題下編寫:D。很好的答案,順便說一句。 – Tom

+0

我完全可以理解開始做某些事情的衝動,而不是通過一些「無聊」的教程和課程來工作,但通常相當於之後獲得樂趣並完成某些事情。 –

相關問題