在Java中共享数据和方法的正确方法

在Java中共享数据和方法的正确方法,java,oop,class,Java,Oop,Class,因此,我终于开始学习高效编程(过去每件事都使用一个类),到目前为止,我正在制作的这个新游戏有以下几个类: 游戏驾驶员 地图 挡块 玩家 现在,Map创建了一个块对象的ArrayList,游戏驱动程序创建了一个Map对象和一个Player对象,现在一切都很好。但现在我遇到了一个问题 我向玩家添加了一个名为checkLand()的方法,GameDriver调用该方法来检查玩家是否可以踩到某个点,但为了让该方法能够检查,它需要访问游戏驱动程序正在使用的地图对象,因此我尝试了以下方法: public

因此,我终于开始学习高效编程(过去每件事都使用一个类),到目前为止,我正在制作的这个新游戏有以下几个类:

  • 游戏驾驶员
  • 地图
  • 挡块
  • 玩家
现在,Map创建了一个块对象的ArrayList,游戏驱动程序创建了一个Map对象和一个Player对象,现在一切都很好。但现在我遇到了一个问题

我向玩家添加了一个名为checkLand()的方法,GameDriver调用该方法来检查玩家是否可以踩到某个点,但为了让该方法能够检查,它需要访问游戏驱动程序正在使用的地图对象,因此我尝试了以下方法:

public class Player(){
    GameDriver gameDriver = new GameDriver();
    ...more declarations    

    public boolean checkLand(int xCord, int yCord){
        if (gameDriver.map.world.get(gameDriver.map.getByCords(xCord,yCord)).type == 1) {
            return false;
        } else {
            return true;
        } 

    }

但很明显,它不起作用,但我想让你们看看,这样你们就可以理解我想要它做什么,我应该在GameDriver中使用checkLand方法吗?我想知道最好的方法:)

由于
Player
对象是由
GameDriver
对象创建的,您应该能够访问
GameDriver
类中的
Player
对象。另外,您还说过,
Map
对象也正在您的
GameDriver
类中创建,因此该类也可用

您可以在
Player
类中使用一个方法,该方法将
Map
对象作为参数,并执行所需的逻辑


这将允许您的
GameDriver
对象调用它拥有的对象(
Player
),并将另一个它也拥有的对象(
Map
)传递给它。

,效果非常好!非常感谢你!听起来我是在以一种非常有效的方式编写代码,还是需要做很多工作?@JeremySayers:我不能说,我不知道你到底想做什么,以及如何做。也就是说,我建议你看看设计模式,这是一个有用的网站。大多数情况下,这些模式会让你的应用程序设计更简洁、更高效。谢谢你,我希望我能更多地理解该网站所说的内容,但这只是意味着我还有更多的学习要做:)@JeremySayers:有整本书都致力于这一主题,因此它可能会错过一些东西。