我可以在已实现的方法中执行哪些操作?

时间:2019-07-28 12:36:27

标签: java

我想模拟射击。该枪有6发子弹。每次射击后,子弹的数量应减少。

这是代码

public interface Gun {
  public void shot();
  public void reload();
}

这是主要内容:

package com.example;

class HelloCodiva {

  public static void main(String[] args) {
    Pistol pistol = new Pistol();
    Gun gun;
    gun = new Pistol();
    gun.shot();
    System.out.println(pistol.getBullets());
    gun.shot();
    gun.shot();
  }
}
class Pistol implements Gun {
  private int bullets;
  private int damage;
  private boolean reload;

  public Pistol () {
    this.bullets = 6;
    this.damage = 10;
  }

  @Override
  public void shot() {
      this.bullets-=1;
      System.out.println("Shotting");
  }

  @Override
  public void reload() {
      if(reload){
      System.out.println("Reloading...");
        reload = false;
      }

  }

  public int getBullets() {
    return bullets;
  }

}

但是我总是得到相同的初始金额(6)。我做错了什么?

2 个答案:

答案 0 :(得分:0)

Pistol pistol = new Pistol();
Gun gun = new Pistol();

您正在从gun开枪,同时在pistol中检查子弹。

如果您是从pistol拍摄的

pistol.shot();

pistol.getBullets()将返回预期的结果。

我想getBullets()可以是Gun界面的一部分,因此您将可以使用Gun类型并可以同时访问getBullets()时间。

所有枪支都有子弹,对吗?除了花哨的,例如Taser ...

答案 1 :(得分:0)

您正在从

射击
Gun gun;
    gun = new Pistol();

但算上子弹

Pistol pistol = new Pistol();
 System.out.println(pistol.getBullets());