面向对象编程是否适用于 2 种方法?

Does object oriented programming work with 2 methods?

我在为我一直在开发的小游戏编写代码时遇到了问题。在下面的代码中,我尝试使用面向对象的编程。 因为我正在使用 KeyEvent,所以我认为我需要使用 2 种方法,但是由于某种原因找不到 int 键。有人可以帮助我吗?

    class KeyEvt {
        void keyPressed (KeyEvent e) 
        {
            int key = e.getKeyCode();
        }
    }
    class Dodger {
        public static void main (String args[])

        {
            boolean GameOver = false;
            int obst;
            KeyEvt left = new KeyEvt();

            do
            {
                obst = (int) (Math.random() * 4) +1;
                if (obst == 1)
                {
                    System.out.println("   ---");
                    if (KeyEvt.key == KeyEvent.VK_LEFT){}
                }

在您的 class KeyEvt 中,您没有声明实例变量 key,而是在 keyPressed 中声明了方法变量 key。一旦方法完成,此方法变量将 'disapear'。

为了在方法完成后保留值,您需要将其声明为实例变量:

class KeyEvt {
    public int key;
    void keyPressed (KeyEvent e) 
    {
        key = e.getKeyCode();
    }
}

您还需要访问 KeyEvt class 的实例,而不是 KeyEvt class 本身:

if (left.key == KeyEvent.VK_LEFT){}

显然这缺少很多封装(key 可由其他人修改),并且由于原始 KeyEvent 已经有了键码,问题就出现了为什么你需要一个 KeyEvt class 毕竟 KeyEvent class 提供了你所需要的。