2016-04-29 64 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

我完全可以理解开始做某些事情的冲动,而不是通过一些“无聊”的教程和课程来工作,但通常相当于之后获得乐趣并完成某些事情。 –

相关问题