-
匿名内部类
: 只想创建这个类的一个对象,甚至不想要为类指定名字public void start(int interval, boolean beep){ var listener = new ActionListener{ public void actionPerformed(ActionEvent event){ System.out.println("At the tone, this time is " + Instant.ifEpochMilli(event.getwhen)); if(beep) Toolkit.getDefaultToolkit().beep(); } }; var timer = new Timer(interval, listener); timer.start(); }
- 这个语法非常晦涩难懂, 含义:创建一个类的新对象,这个类实现了 ActionListener 接口,需要实现的方法在 actionPerformed 中定义
-
语法:
new SuperType(construction parameters){ inner class methods and data }
-
SuperType
是 接口,如果是这样,内部类就要实现这个接口 eg: ActionListener -
SuperType
是 类,如果是这样,内部类就要扩展这个类 -
匿名内部类不能有构造器,因为构造器名字必须与类名相同,而匿名内部类没有类名 👿 👿 👿
-
construction parameters
构造参数 是要传递给超类构造器的变量,如果一个内部类实现一个接口,那就不会有任何构造参数( 接口是定义行为的,不是定义生产方式的 ),不过仍然要 提供一个小括号new InterfaceType(){ methods and data }
-
例子: 类构造新对象 和 扩展了那个类的匿名内部类对象 之间的差别
// a Person Object var queen = new Person(); // an object of an inner class extending Person var count = new Person("Dracula"){...};
- 如果 构造参数列表 后跟一个开始大括号,就是定义
匿名内部类
- 如果 构造参数列表 后跟一个开始大括号,就是定义
-
尽管不能有构造器,但可以提供一个对象初始化块
var count = new Person("Dracula"){ {Initialization} ... };
-
匿名内部类:Java
最新推荐文章于 2022-08-06 09:38:01 发布