Java 面向对象编程有两种方法吗?
我在为一个小游戏编写代码时遇到了一个问题。在下面的代码中,我尝试使用面向对象编程。 当我使用KeyEvent时,我想我需要使用2种方法,但是由于某些原因,找不到int key。有人能帮我吗Java 面向对象编程有两种方法吗?,java,oop,keyevent,Java,Oop,Keyevent,我在为一个小游戏编写代码时遇到了一个问题。在下面的代码中,我尝试使用面向对象编程。 当我使用KeyEvent时,我想我需要使用2种方法,但是由于某些原因,找不到int key。有人能帮我吗 class KeyEvt { void keyPressed (KeyEvent e) { int key = e.getKeyCode(); } } class Dodger { public
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){}
}
在类
KeyEvt
中,您没有声明实例变量key
,而是在中声明方法变量key
。此方法变量将在方法完成后立即“disappear”
为了在方法完成后保留该值,需要将其声明为实例变量:
class KeyEvt {
public int key;
void keyPressed (KeyEvent e)
{
key = e.getKeyCode();
}
}
您还需要访问KeyEvt
类的实例,而不是KeyEvt
类本身:
if (left.key == KeyEvent.VK_LEFT){}
显然,这缺少很多封装(键
可由其他人修改),由于原始的KeyEvent
已经有了keycode,问题出现了,为什么你需要一个KeyEvt
类,因为KeyEvent
类提供了你所需要的。请添加一些关于发生了什么的更多信息,并询问一个特定的问题,而不是它不起作用。请帮助是否有任何错误消息考虑到您忘记共享的内容?最好将key
设置为private
并像我写的那样添加getter
,这样就完全没有封装性,而且根本不需要KeyEvt
类。然而,OP当前的问题是实例变量,后面还会有其他问题:-)非常感谢,非常感谢您的帮助是的,也许,当浏览代码时,我可以看到几个问题。我的建议是在非常小的步骤中构建代码,在运行小步之前不要继续。