【问题标题】:Getting value from an abstract class从抽象类中获取价值
【发布时间】:2017-09-20 07:55:40
【问题描述】:

所以我试图从类 Players 中获取 Speed 的值并将其传输到 Class Player1 中的变量 newSpeed。但是我仍然无法让 Player 的 Speed 将值传递给类 Player1 的 newSpeed。 newspeed 的值应该是 2,但它仍然是 0。我已经坚持了 2 个多小时。我真的需要帮助。

P/S:我没有包括我的 Driver 课程,因为我相信问题出在此处。但是,如果您需要,我仍然可以将它们包括在这里

类玩家:

    public abstract class Players {


   protected static int speed=2;
   private int x;
   private int y;
   public abstract void resetLocation();

   public int getSpeed()
   {
      return speed;
   }
}

类玩家 2

public class Player2 extends Players {

    private int newSpeed=1;

    Player2() {

        super.speed=this.newSpeed;
    }


    public int getSpeed()
    {
        return newSpeed;
    }
    /**
     *
     * Function to set how many steps can the player goes.
     */
    public void setMovementSpeed(int speed)
    {
        this.newSpeed=speed; //this is for another functionality.
    }

}

主要:

public class Main {
    public static void main(String[] args)
    {

        Player2 p2 = new Player2();


        System.out.println(p2.getSpeed());
    }
}

这是我尝试过的。

【问题讨论】:

  • 你的主要方法?请粘贴它
  • 为什么 speed 在类 Players 中是静态的?这应该是一个实例属性。
  • 实例?但是不是抽象类不能实例化
  • 你是如何运行你的程序的?我没有看到 public abstract void resetLocation();方法实现。
  • 它会打印1,这是什么问题?

标签: java inheritance abstract-class


【解决方案1】:

如下更改 Player2 以获得预期结果

Player2() {

        newSpeed = speed;
    }

在 Player2 构造函数中,您将实例值设置为超级实例值,因此您必须更改条件才能获得预期结果

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-22
    相关资源
    最近更新 更多