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

时间:2018-04-14 11:19:13

标签: java oop keyevent

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

    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){}
                }

1 个答案:

答案 0 :(得分:0)

在您的班级KeyEvt中,您不会在key中声明实例变量key,而是声明方法变量keyPressed。这个方法变量将“消失”。一旦方法完成。

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

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

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

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

显然这缺乏很多封装(key可由其他人修改),并且由于原始KeyEvent已经有了密钥代码,因此问题就出现了为什么你需要{{1}毕竟,KeyEvt类提供了你需要的东西。