匿名内部类匿名内部类
1.什么是匿名内部类什么是匿名内部类
所谓匿名内部类(anonymous inner class),是指可以利用内部类创建没有名称的对象,它一步完成了声明内部类和创建该类的一个对象,并利用该对象
访问到类内的成员,这种类不取名字,而是直接用其父类的名字或者它所实现的接口的名字,而且匿名内部类的定义与创建该类的一个实例同时进行,即
在类的定义前面有一个new运算符,而不是使用关键字class,同时带上小括号"()"表示创建对象。创建匿名内部类并访问成员的语法格式如下:
( // 创建匿名内部类,并且执行所定义的方法)
//括号内不允许有参数
new 类名()
{
方法名 (参数1,参数2,...,参数n)
{
方法体语句;
}
}
).方法名(参数1,参数2,...,参数n)
创建匿名内部类的用意,主要是用来补充内部类中没有定义到的方法,并可有效的简化程序代码。
【注意】:匿名内部类前不能有修饰符,也不能定义构造方法,因为它没有名字,也正由于这个原因,在创建对象时也不能带参数,因为默认构造方法不
能带参数。
2.匿名内部类的使用方法匿名内部类的使用方法
public class test {
publicstatic void main(String[] args) {
// 创建匿名内部类Inner的对象
new Inner() {
void setName(String n) {
name = n;
System.out.println(“姓名:”’ + name);
}
}
// 执行匿名内部类里所定义的方法
).setName("小明");
}
// 定义内部类
static class Inner {
String name;
}
}
该程序声明的内部类Inner只定义了成员变量name,但是没有定义setName()方法。利用new运算符创建了匿名内部类Inner的对象,并在之后补充定义了
setName()方法,创建之后调用setName()方法,并传入参数。
创建了内部类Inner的对象,但却没有给这个对象赋予名称,也就是“匿名”之意。因此把Inner称为“匿名内部类”。
补充:在文件管理方面,匿名内部类在编译完成之后,所产生的文件名称为“外部类名$编号.class”,其中编号1、2、....、n,每个编号为n的文件对应于第n
个匿名类。所以上面程序编译完成之后会产生:test.class、tes$Innert.class、test$1.class三个文件。(在java的窗口程序设计中,经常利用匿名内部类的
技术来编写“事件”(Event)的程序代码)。
作者:small_Stone1.0
评论0