foxspecial

导航

java中this的用法?

2008-07-28 08:10cztx5479 | 分类:JAVA相关 | 浏览4533次

java中this的用法?

 

import java.awt.*;

import java.awt.event.*;

//TwoListen类同时实现MouseMotionListener和MouseListener两个接口

public class TwoListen implements MouseMotionListener,MouseListener

{

 private Frame f;

 private TextField tf;

 

   public static void main(String[] args)

   {

  TwoListen two=new TwoListen();

  two.go();

   }

   public void go()

   {

    f=new Frame("Two listeners example");

    f.add(new Label("Clic and drag the mouse"),"North");

    tf=new TextField(30);

    f.add(tf,"South");

    //注册监听程序

    f.addMouseMotionListener(this);//(************************)

    f.addMouseListener(this);      //(************************)

    f.setSize(300,300);

    f.setVisible(true);            //(************************)

   }

      //实现MouseMotionListener接口中的方法

   public void mouseDragged(MouseEvent e)

   {

    String s="Mouse dragging:X="+e.getX()+"Y="+e.getY();

    tf.setText(s);

   }

   public void mouseMoved(MouseEvent e){}

   //实现MouseListener接口中的方法

   public void mouseClicked(MouseEvent e){}

   public void mouseEntered(MouseEvent e)

   {

    String s="The mouse entered";

    tf.setText(s);

   }

   public void mouseExited(MouseEvent e)

   {

    String s="The mouse has left the building";

    tf.setText(s);

   }

   public void mousePressed(MouseEvent e){}

   public void mouseReleased(MouseEvent e){}

}

 

请问我用//(*******************)标记的那三句中this具体是什么意思?指代什么的,能用什么替换吗?

我原来认为this是用来表示生成的对象的,那么这里生成的对象不是two吗?怎么我用two替换后就不能运行了呢?

哪位老兄知道的请解释详细一点,请把我上边的几个问题都回答一下,要是我觉得答案很好的话,会再追加二十分,

谢谢.

请问这里的this能用什么替换,一定要用this吗?(如果知道能用什么替换的话,我可能比较好理解一点)如果是指针的话,请说一下指针指向的是什么,具体是怎么指向的?我刚学JAVA,请仔细说一下,谢谢。还有,JAVA中不是不用指针吗,那this怎么又是隐含指针了呢?我真是很糊涂啊,请耐心教教我!

 

 

1、this指向当前类的对象,也就是TwoListen类的对象。由于MouseMotionListener,MouseListener 都是接口,因此

f.addMouseMotionListener(this);//(************************)

f.addMouseListener(this); //(************************)

中分别需要一个实现了MouseMotionListener和MouseListener接口的类的实例。

 

在本例子中 TwoListen类都实现了这两个接口,因此可以用本类的实例来做参数。或者新建一个实现了这两个接口的类,再用这个类的实例做参数。

 

2、在该例子中,this指向生成的two对象。为什么用two替换后就不能运行了呢?

因为two是在main方法中定义的,是局部变量;而在go方法中并不能访问其他方法中定义的局部变量。

如果把two定义为全局变量,如:

static TwoListen two;

再在main方法中定义:

two=new TwoListen();

 

这时就可以用two代替this了

posted on 2013-07-23 14:12  foxspecial  阅读(366)  评论(0编辑  收藏  举报