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

如何从另一个Java文件中获取值?,java,oop,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.nickn

第一个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;
        }
    }
}
public class Boss {
    public int bpower(){
        return bpower;
    }
}
编译错误:

.\Swordsman.java:32: error: cannot find symbol
        }else if(power<bpower){
\browsman.java:32:错误:找不到符号

}else if(power我在理解这个问题上有很多困难。你似乎缺乏java的基本概念以及面向对象编程

我会尝试解释:

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

  • 您有一个类
    Boss
    ,它完全独立。并且可以实例化以创建Boss对象

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

  • 要真正能够使用该方法,您需要将类导入到目标类中,如
    import Boss;
    ,然后您需要从某处获取该对象的实例(通过将其作为参数传递或通过重新创建它,如
    Boss currentBoss=new Boss();
    然后您可以访问您的值,如
    currentBoss.getBpower();

  • 但是,Boss类没有bpower的setter,也没有构造函数,您可以在其中将一些默认值设置为bpower。因此,当前的Boss类完全没有用处,因为bpower不能具有有效的int值

  • 在架构方面也有很大的改进空间。你正在开始一个
    神类
    。你的剑客类开始做一些你可能不希望它做的事情。比如计算一场战斗的结果

  • 顺便说一句:一个好习惯是根据方法所做的事情来命名方法。因此,
    result
    听起来像一个属性名(名词),而它是一个方法(动词)。因此,
    getResult()
    会有一定的意义,甚至更好的做法是
    boolean isfighttagainstenemysuccessful(敌人)

    • 然而,在将战斗逻辑编码到你的角色类中时,你可能需要三思而后行。在所有角色都继承自的普通类(这里是初学者)中,这是最好的
    • 或者,您甚至可以创建一个singleton
      FightingMachine
      类,该类提供一些实用方法,如
      boolean FightingMachine.isCharacterWinningAgainstBenefy(角色,敌人)
  • 经验法则:如果你将一种能力编码到一个看起来令人惊讶的类中,那么它可能是错误的。对于rpg来说,我认为它的外壳是某种游戏状态。它可以控制和存储环境、角色和敌人,并在需要时发起战斗。而不是另一个到处乱跑


我的实际建议是在编写角色扮演游戏之前先学习java的概念。这样你会有更多的乐趣。我保证!

“在编写代码之前先学习java的概念[…]”这可以写在这么多的问题下:D.答案很好,顺便说一句。我完全理解从做某事开始而不是通过一些“枯燥”的教程和课程工作的冲动,但这通常意味着事后获得乐趣并完成一些事情。