请高人指点!!!
下面代码可以运行也可以编译,无任何问题!但是却有个新问题,为什么test类实现了MouseMotionListener 后,并没有实现MouseMotionListener的所有方法也照样可以编译运行呢?这是不是违反了类实现接口的最基本原则,却又能成功编译运行?请高人指点下!
import java.awt.*;
import java.awt.event.*;
public class test extends MouseAdapter implements MouseMotionListener
{ Frame f;
int x;
int y;
Button b;
Point or=new Point();
Point p=new Point();
public static void main(String[] args)
{ new test(); }
public test()
{ f=new Frame("testdrr2");
f.setLayout(null);
b=new Button("one");
b.setSize(60,60);
b.setLocation(80,80);
b.addMouseListener(this); b.addMouseMotionListener(this); f.add(b);
f.setSize(200,200);
f.setVisible(true);
}
public void mousePressed(MouseEvent e)
{ or.x=e.getX();
or.y=e.getY();
}
public void mouseDragged(MouseEvent e) { p=b.getLocation();
b.setLocation(p.x+e.getX()-or.x,p.y+e.getY()-or.y); }
}
下面代码可以运行也可以编译,无任何问题!但是却有个新问题,为什么test类实现了MouseMotionListener 后,并没有实现MouseMotionListener的所有方法也照样可以编译运行呢?这是不是违反了类实现接口的最基本原则,却又能成功编译运行?请高人指点下!
import java.awt.*;
import java.awt.event.*;
public class test extends MouseAdapter implements MouseMotionListener
{ Frame f;
int x;
int y;
Button b;
Point or=new Point();
Point p=new Point();
public static void main(String[] args)
{ new test(); }
public test()
{ f=new Frame("testdrr2");
f.setLayout(null);
b=new Button("one");
b.setSize(60,60);
b.setLocation(80,80);
b.addMouseListener(this); b.addMouseMotionListener(this); f.add(b);
f.setSize(200,200);
f.setVisible(true);
}
public void mousePressed(MouseEvent e)
{ or.x=e.getX();
or.y=e.getY();
}
public void mouseDragged(MouseEvent e) { p=b.getLocation();
b.setLocation(p.x+e.getX()-or.x,p.y+e.getY()-or.y); }
}
当你要添加相应的动作的时候只需overload相应的方法
其二,MouseListener对应的Aapter类是MouseAdapter,而MouseMotionListener对应的Adapter类是MouseMotionAdapter.MouseAdapter类又怎么实现了MouseMotionListener中其他未在程序中声明的方法呢?
还有其他解释么?