请高人指点!!! 
下面代码可以运行也可以编译,无任何问题!但是却有个新问题,为什么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); } 

解决方案 »

  1.   

        MouseAdapter  适配器已将各方法集中处理,用的时候只需重写你要实现功能部分的那个方法就行了
      

  2.   

    MouseAdapter是适配器,继承了MouseAdapter类(MouseAdapter类实现了MouseMotionListener中的方法,当然test类也实现了MouseMotionListener中的方法)
    当你要添加相应的动作的时候只需overload相应的方法
      

  3.   

    以上的各位的解答本人不太满意。第一InputEvent分为两个子类(MouseEvent,MouseMontionEvent);
    其二,MouseListener对应的Aapter类是MouseAdapter,而MouseMotionListener对应的Adapter类是MouseMotionAdapter.MouseAdapter类又怎么实现了MouseMotionListener中其他未在程序中声明的方法呢?
    还有其他解释么?
      

  4.   

    再说如果以上各位的解释成立的话,那说明test类继承了两个不同的类(MouseAdapter及MouseMotionAdapter),这与java的不能多重继承原则相冲突!
      

  5.   

    我刚才试了下,就算test类不实现接口MouseMotionListener,依旧可以正常编译运行。