Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中,对象如何使用方法相互交互?_Java_Object_Methods_Interaction - Fatal编程技术网

在java中,对象如何使用方法相互交互?

在java中,对象如何使用方法相互交互?,java,object,methods,interaction,Java,Object,Methods,Interaction,我正在学习java,可以自己编写几乎没有任何问题的代码。但我一直在阅读书籍——在java中,对象通过调用其他对象的方法进行交互 我不确定我是否明白这一点。例如,一个Robot类,它有moveForward(),comeToBase(),increaseSpeed()等方法。现在,如果有两个机器人对象,那么它们将如何相互作用以避免冲突?我可以很好地理解,每个机器人对象都可以独立调用自己的方法并独立运行,但是对象之间的交互是如何发生的呢?有人能根据上面的例子解释一下吗?我想 在java中,对象通过调

我正在学习java,可以自己编写几乎没有任何问题的代码。但我一直在阅读书籍——在java中,对象通过调用其他对象的方法进行交互

我不确定我是否明白这一点。例如,一个
Robot
类,它有
moveForward()
comeToBase()
increaseSpeed()
等方法。现在,如果有两个机器人对象,那么它们将如何相互作用以避免冲突?我可以很好地理解,每个机器人对象都可以独立调用自己的方法并独立运行,但是对象之间的交互是如何发生的呢?有人能根据上面的例子解释一下吗?

我想

在java中,对象通过调用其他对象的方法进行交互


这意味着RobotFleet对象包含许多Robot对象,并且可以通过Robot对象上的方法对其进行操作。

对象通常通过引用相互通信。例如:

class Robot {
    private String m_name;

    public void SetName(String name) {
       m_name = name;
    }

    public String GetName() {
       return m_name;
    }

    public void TalkTo(Robot robot, String speech){
        console.writeline(robot.GetName + " says " + speech " to you.");
    }
}

void MyMethod() {
    Robot robotOne = new Robot();  // variable robotOne contains a reference to a robot
    Robot robotTwo = new Robot();  // variable robotTwo contains a reference to another robot
    robotTwo.SetName("Robert");

    // the first robot says hi to the second
    robotOne.TalkTo(robotTwo, "hello");

   // output
   // Robert says hello to you
}

我认为@Richard Tingle是正确的——对于两个机器人对象相互反应来说,有一个更高级别的类来控制它们,并处理移动它们,如果它们发生碰撞怎么办,根据特定条件提高速度等等,这是有意义的

您可能会有一个更高级别的类,它有一个主循环,在每个循环上调用处理用户输入、物理计时、对象行为、对象冲突、渲染对象等的方法,直到整个场景结束,控制权传递给代码的另一部分。因此,这个带有主循环的类可以调用一个迭代所有机器人对象的方法,并调用机器人对象上的某些方法,以确定如何基于当前物理建模环境做出响应

类似级别的类将负责创建和初始化机器人对象,并通过系统传递控制以管理整个程序。用Java建模的所有东西都可以被视为对象,甚至更高级别的建模,如游戏初始化和游戏流管理

举一个非常基本的例子:

public class Game {

    private List<Robot> robots = new ArrayList<Robot>();
    private boolean GameEnded = false;

    public static void main(String [ ] args) {
        initiliaseGame();
        startGameLoop();
        System.exit(0);
    }

    private void initialiseGame() {
        Robot robot1 = new Robot();
        robots.add(robot1);
        Robot robot2 = new Robot();
        robots.add(robot2);
    }

    private void StartGameLoop() {
        while (!gameEnded) {
            /* would need time control logic here for more manageable and consistent simulation */
            updateRobots(); // could check for collisions between other Robots here
            drawRobots();
        }
    }

    private updateRobots() {
        for (Robot robot : robots) {
            robot.update(); // do each robots behaviour (physics, decisions, etc)
        }
    }

    private drawRobots() {
        for (Robot robot : robots) {
            robot.draw(); // draw each robot
        }
    }
}
公共类游戏{
private List robots=new ArrayList();
私有布尔gameend=false;
公共静态void main(字符串[]args){
initiliaseGame();
startGameLoop();
系统出口(0);
}
私人游戏(){
机器人机器人1=新机器人();
机器人。添加(机器人1);
Robot robot2=新机器人();
机器人。添加(机器人2);
}
私有void StartGameLoop(){
而(!游戏结束){
/*这里需要时间控制逻辑,以便进行更易于管理和一致的模拟*/
updateRobots();//可以在此处检查其他机器人之间的冲突
牵引机器人();
}
}
私有更新机器人程序(){
用于(机器人:机器人){
robot.update();//执行每个机器人的行为(物理、决策等)
}
}
私人机器人(){
用于(机器人:机器人){
robot.draw();//绘制每个机器人
}
}
}

您在谈论什么交互?您可以调用任何引用对象的方法。如果你想让机器人知道彼此,你就必须把它们的参考信息传递给对方。通常情况下,更高的对象将同时管理这两个对象(如物理引擎)