Tank 构造函数为
Tank(int x, int y )
Tank(int x, int y ,TankClient tc)
public class TankClient extends Frame {
Tank myTank = new Tank(50,50,this); //*******这个没问题******
public void launchFrame(){
this.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e){
if(e.getKeyCode()==KeyEvent.VK_SPACE) Tank myTank1 = new Tank(50,50,this); // ***]*这个报错********
//******** 如果是 Tank myTank1 = new Tank(50,50), 没问题****
}
});
}
}
------解决思路----------------------
this指针是一个隐含的指针,它是指向对象本身的,代表了对象的地址.Tank myTank = new Tank(50,50,this); 这行代码是定义了TankClient这个类的属性,这个时候this指针指向的是TankClient这个类的当前对象位置,接下来你定义了一个成员函数,这个成员函数的作用是给当前类的对象添加对键盘事件的监听,需要注意在keyPressed(KeyEvent e)这个方法中,当前对象变成了键盘相应的事件对象,这个时候,在这个方法中使用this指针,并不是获取当前TankClient对象的实际地址,而是键盘响应事件的实际地址。可以用eclipse跟踪下看看。