面向对象编程是否适用于 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 提供了你所需要的。
我在为我一直在开发的小游戏编写代码时遇到了问题。在下面的代码中,我尝试使用面向对象的编程。 因为我正在使用 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 提供了你所需要的。