匿名类(Anonymous Class)

    技术2022-05-11  138

    当一个内部类的类声名只是在创建此类对象时用了一次,而且要产生的新类需继承于一个已有的父类或实现一个接口,才能考虑用匿名类,由于匿名类本身无名,因此它也就不存在构造方法,它需要显示地调用一个无参的父类的构造方法,并且重写父类的方法。所谓的匿名就是该类连名字都没有,只是显示地调用一个无参的父类的构造方法。

       import java.awt.* ;   import java.awt.event.*;    public class AnonymousClass{     private Frame f;     private TextField tf;     public AnonymousClass(){      f=new Frame("Inner classes example");      tf=new TextField(30);    }    public void launchFrame(){      Label label=new Label("Click and drag the mouse");      f.add(label,BorderLayout.NORTH);      f.add(tf,BorderLayout.SOUTH);      f.addMouseMotionListener(new MouseMotionAdapter(){ //匿名类开始       public void mouseDragged(MouseEvent e){        String s="Mouse dragging: x="+e.getX()+"Y="+e.getY();        tf.setText(s); }      } ); //匿名类结束       f.setSize(300,200);      f.setVisible(true);      }       public static void main(String args[]) {        AnonymousClass obj=new AnonymousClass();        obj.launchFrame();        }      }

      其实大家仔细分析一下,本例使用匿名类与使用内部类可以实现完全相同的功能,只不过采取的方式不同。从使用内部类,到使用匿名类,可以说从类的关系来说是越来越不清楚,但是程序也越来越简练。熟悉这两种方式也十分有助于大家编写图形界面的程序。


    最新回复(0)