this,super的使用以及不同类之间对象的调用

this可以调用本类中对象的属性和方法,而super可以调用父类中对象的属性和方法,可以简化代码,对象用this或者super替代。关于类和对象的关系,有一点不得不提,在一个类中只能使用一个对象,如果创建并使用多个类会导致“空指针异常”。当你需要在A类中调用B类的属性和方法时,需要把B类的对象传给A类。接下来我们通过一个例子来展示这个过程:

这里我们关注前两个类,第一个类中写窗体的代码,第二个类中写监听器的代码。我们需要在第二个类中用到第一个类的画笔。

DrawMouse mouse = new DrawMouse();
mouse.setGr(g);

在A类中创建了B类的对象,即可调用B类中的setGr函数。

private Graphics gr;

  public void setGr(Graphics g) {
  gr = g;
  }

B类创建一个A类的对象,来接收A类的对象,接下来即可调用A类的方法。

private Graphics g;
  public void setGr(Graphics g) {
  this.g = g;
  }

此处也可以创建一个同名的对象,使用我们上面提到的this在下方赋对象时来替代gr,表明是使用此类对象的g。当需要多次调用时会发现this可以大大简化代码。

至于super的使用,我们再举一个例子。如下:

public class DrawFrame extends JPanel

这里写了一个DrawFrame类,继承JPanel类。

        public void paint(Graphics g)
        {
            super.paint(g);
            
            for(int i=0;i<arrayShape.length;i++)
            {
                Shape shape=arrayShape[i];
                if(shape!= null)
                    shape.drawShape(g);
                else break;
            }
            
        }

这个paint的方法是重写于JPanel的一个方法,super.paint(g);这个方法是调用原先的画板组件的绘制方法,super则指的是JPanel,它下方的代码是我们手动增加进去的,实现一些画板的恢复功能。关于画板的恢复,我们会在后面的博客中提到。

顺便一提,在添加鼠标监听器时也可以用到this的方法。即,给画板添加监听器。

            //给窗体添加鼠标监听器方法
            this.addMouseListener(mouse);
            this.addMouseMotionListener(mouse);

猜你喜欢

转载自www.cnblogs.com/mayifan/p/9857886.html
今日推荐