如何从另一个Java文件中获取值?

时间:2016-04-29 08:44:11

标签: java oop

第一个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文件中的第二个Java文件访问bpower。我怎么能这样做?

1 个答案:

答案 0 :(得分:7)

我在理解这个问题时遇到了很多麻烦。看来你缺乏java的基本概念以及面向对象的编程。

我会尝试解释:

  • 您有一个类Swordsman,可以将其实例化以创建剑客对象。这些对象只能看到自己的内容。

  • 你有一个完全独立的班级Boss。并且可以实例化以创建Boss对象。

  • 如果要访问存储在Boss对象中的任何值,通常使用getter和setter方法。你已经拥有的(吸气剂)。请注意,您通常希望按照约定将这些方法命名为getBpower()。你在某些方法上做到了这一点,但忘记了其他方法。

  • 要实际能够使用该方法,您需要将类导入目标类,如import Boss;然后您需要从某个地方获取该对象的实例(通过获取它作为参数或重新创建Boss currentBoss = new Boss();,然后您可以像currentBoss.getBpower();

  • 那样访问您的值
  • 但是Boss类没有bpower的setter,也没有构造函数,你可以在其中设置一些默认值为bpower。所以当前的Boss类完全没用,因为bpower不能有一个有效的int值。

  • 架构方面还有很大的改进空间。您正准备开始god class。你的剑士课开始做你可能没想到的东西。就像计算战斗的结果一样。

  • 顺便说一句:一个好习惯是根据他们的行为来命名方法。所以result听起来像一个属性名称(名词),而它是一个方法(动词)。所以getResult()会有所帮助,更好的是boolean isFightAgainstEnemySuccessful(Enemy)

    • 但是,您可能需要三思而后行将战斗逻辑编码到角色类中。对于所有角色都继承的公共类(这里是初学者),这些东西最好。
    • 或者你甚至可以通过创建一个提供FightingMachine等实用方法的单例boolean FightingMachine.isCharacterWinningAgainstEnemy(Character, Enemy)类来改善自己。
  • 根据经验法则:如果你将一个能力编写成一个似乎令人惊讶的类,那么它可能就错了。对于一个RPG,我希望这个东西的外壳是某种gameState。然后,如果需要,它可以控制和存储环境,角色和敌人并开始战斗。不是相反。

我的实际建议是在尝试编写角色扮演游戏之前实际学习java的概念。那你就会有更多的乐趣。我承诺!