java中为什么说匿名内部类只能使用一次
首先了解一下类和对象(实例)的概念:
类:类是一个模板,是个抽象的概念,用来模拟一类事物,一旦定义了一个类,这个类就永远存在。在写代码的时候,我们都会写各种类,一般普通的类都会有类名,通过类名来创建实例。
对象:对象是类的一个实例,通常我们会通过new来创建一个类的实例,即对象。
为什么要先区分类和对象(实例)的概念?
因为这里所说的匿名内部类只能使用一次,注意是说匿名内部类,而不是说对象,指向匿名内部类的对象可以使用多次。
Animal al = new Animal() {
@Override
public void eat() {
System.out.println("某种动物吃啥来");
}
};
如上面代码所示,匿名内部类的实例(对象)al可以多次使用,但是匿名内部类(指下面这部分),只能使用一次
new Animal() {
@Override
public void eat() {
System.out.println("某种动物吃啥来");
}
};
通过以上分析,可以得出普通类可以使用多次,为什么内部类只能一次?
首先了解下匿名内部类的定义:
匿名类: 顾名思义是没有类名的内部类,由于没有名字,所以匿名类只能使用一次,它一般专用于处理某个任务,简化代码编写。
由于普通的类有类名,如:public class Amimal{…},使用时Animal al = new Animal();可根据这个Animal类名多次new使用,创建实例,Animal类的代码在new时是固定的。
而匿名内部类没有类名,每次使用时,都要new 类名(){…};这里的代码不是固定的,每次都可以变化,故只能用一次。