JAVA 传递参数的一些方法

[/color][color=darkblue]意义:将代码全部写在一个类里面显然会显得繁冗复杂,也不好修改。
      良好的习惯就是创造多个类,但其中就需要到参数的调用,所以就涉及到传参。



例子:
      画图板
      在写一个画图板的程序中,我们画图需要用到 MouseListener()方法.
     新建一个 MouseListener()的对象
      MouseListener mouse_listener = new mouseListener()
      这样肯定是不行的,因为 MouseListerner是一个接口,无法直接实例化里面的抽象方法。
      我们可以用匿名内部类去实现里面的所有抽象方法,但本文开始就以及说过,代码堆积在一起显得很繁冗,所以我们把这个实例化写进另外一个类 MyMouseListener.     就拿画直线作为例子,我们需要在鼠标释放的时候画出直线,也就是调用方法 g.drawLine().
      这里就有一个问题,如何将另外一个类中的 Graphics g = this.getGraphics() 里的g传递给 MyMouseListener类里面来。
      我们知道,在重写 MouseListener后会在另外一个类里面创建监听对象 mouse_listener.
     MouseListener mouse_listener = new MymouseListener();
     我们现在需要传递参数g,只能在两个类的关联处下手.
      可以通过构造函数去传递g.这也是比较常用的方法.
     MouseListener mouse_listener = new MymouseListener(g);
     在 MyMouseListener类里面 新建一个构造方法
     public MymouseListener(Graphics gr ){
g = gr;}

     这样就能够在M ymouseListener类里面直接调用 g.drawLine()方法了。
     
      这是传参最常用的方式,那么如何将 MyMouseListener的参数回传,这就要调用方法。
      还是以画图板为例,我们需要获得 command参数去时时更新获取我们所点击的字符串,要将 MyMouseListener类里面的 command传递给MyFrame类里面。
      上面已经提到,在MyFrame类里面我们创建了对象mouse_listener.我们可以用这个对象去调用方法,也就是
     public String getcommand(){return command;}     这样在MyFrame类里面获得 command参数只需要
      mouse_listener.getcommand();
     然后申明全局变量 command,就能直接调用了。


      其实上面有个错误,我到现在才发现。重点和大家分享。
      MouseListener mouse_listener = new mouseListener() 我们创建的对象mouse_listener真的能调用MyMouseListener类里面的方法getcommand()吗?
      其实是不可以的,因为MyMouseListener会自动转型父类。
      也就是说MyFrame的对象mouse_listener只能调用两个类共同的方法而不能调用MyMouseListener中特有的方法。
      如何去解决?
      MyMouseListener mouse_listener = new mouseListener() ;
     这样mouse_listener就能直接调用MyMouseListener类的所有方法了。

你可能感兴趣的:(传参)