设置在另一个类中分配的私有变量的问题

时间:2014-04-24 14:57:38

标签: java

继承了我的装甲和武器设置的代码块,但是eclipse告诉我,当我为力量和生命点添加变量时,它没有为它分配变量。我认为这是因为它是我的播放器类中的私有变量,所以我是否将这些变量公开而不是私有?

public void setArm(){
        switch
        (threeSidedDie.getValue()){
        case 1: Armors = "helmet";
            hitP += 1;
            break;
        case 2: Armors = "gloves";
            hitP += 2;
            break;
        case 3: Armors = "chest armor";
            hitP += 3;
            break;
        }
    }

2 个答案:

答案 0 :(得分:1)

您是否听说过Feature EnvyLaw of Demeter

  

Feature Envy:广泛使用另一个类的方法可能属于另一个类   类。考虑将此方法移动到它非常羡慕的类。

您应该主要根据player类中的player值移动您的流程,从而解决您的问题,而不涉及丑陋的getter和setter。

隐喻:如果我每天都需要汇款到我的帐户,我有两个选择:

  1. 向银行询问所有数据并自行准备我的转账。由于我能够避免银行设定的任何潜在严格规则,因此可能容易出错。
  2. 告诉银行员工:“请将这笔钱转入我的帐户”(无需索取任何数据!)
  3. 显然,2)是合乎逻辑的建议。

    提出反对本质上面向对象的编程。讲述/发送消息是至关重要的。在极少数情况下,需要提问。

    从第一年起就养成了良好的习惯;)

答案 1 :(得分:0)

这是一些代码。
在setArm中使用它:

myPlayer.getHitPoints()

在您的播放器类中添加以下内容:

getHitPoints(){
    return this.hitPoints;
}
setHitPoints( int hitP ){
    this.hitPoints = hitP;
}
getStrength(){
    return this.strength;
}
setStrength( int str){
    this.strength = str;
}