java - 从另一个子类访问子方法

标签 java inheritance libgdx hierarchy

public class Game {
   public class Truck {
      private float x,y;
      public Truck() {}
      public float getX() {return this.x;}
      public float getY() {return this.y;}
   }
   public class Fort {
      public Fort() {
        float x = truck.getX();
        float y = truck.getY();
      }
   }

   public Truck truck = new Truck();
   public Fort fort = new Fort();
}

初学者 Java 程序员尝试制作游戏。 当我尝试获取卡车的 x 和 y 值以在 Fort 的类方法中使用时出现错误。那么是否可以调用另一个子类的方法呢?

这是我收到的错误:

Exception in thread "LWJGL Application" java.lang.NullPointerException
    at com.kroy.game.ETFortress.getTruckDistance(ETFortress.java:178)
    at com.kroy.game.ETFortress.<init>(ETFortress.java:60)
    at com.kroy.game.KroyGame.create(KroyGame.java:45)
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:151)
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:128)

最佳答案

那是因为您是在类中创建类。

  1. 将 Game、Truck 和 Fort 类分成不同的类。
  2. 在 Fort 类中,创建卡车的实例: 私有(private)卡车卡车;
  3. 在 Fort 构造函数中,传递一辆卡车作为参数,并将卡车的 x 和 y 设置为该参数的。
  4. 现在您可以从 Fort 内访问卡车的 getX() 和 getY() 方法。
  5. 在 Game 中创建 Fort 类的实例。现在您的所有类(class)都已连接。

如果您确实是初学者,请在尝试玩游戏之前先学习基础知识。您最终会到达那里,但首先要弄清楚所有代码片段如何协同工作。然后你就可以做任何事情了。

祝你好运!

关于java - 从另一个子类访问子方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59310283/

相关文章:

java - 是否可以有一个带有中间生产者的 Java Stream?

java - 如何为需要 MyClass.class 参数的工厂方法注入(inject) Spring Bean

java - 如何在Java中使用单应方法实现接口(interface)?

android - 无法使用 LibGDX Net 在 Android 上下载 100mb 文件

java - Libgdx SpriteBatch.SetProjectionMatrix 使 spritebatch 不绘制

java - 在 Blender 中使用 Java 库

java - PowerMockito 与 Jacoco 代码覆盖率

c++ - 如何在qt c++中重载子类中的父类(super class)方法

java - 泛型 - 向泛型类提供具体类型时类型不匹配

java - libdgx如何设置TextButton的样式?