匿名类
和子类有关的匿名类
假如没有显式地声明一个类的子类,而又想用子类创建一个对象,那么该如何实现这一目的呢?
Java允许我们直接使用一个类的子类的类体创建一个子类对象,也就是说,创建子类对象时,除了使用父类的构造方法外还有类体,此类体被认为是一个子类去掉类声明后的类体,称作匿名类。匿名类就第一个子类,由于无名可用,所以不可能用匿名类声明对象,但却可以直接用匿名类创建一个对象。
假如Bank是类,那么下列代码就是用Bank的一个子类(匿名类)创建一个对象。
new Bank{
匿名类的类体
};
匿名类有如下特点:
⑴匿名类可以继承父类的方法也可以重写父类的方法。
⑵使用匿名类时,必然是在某一个类中直接用匿名类创建一个对象,因此匿名类一定是内部类。
⑶匿名类可以访问外嵌类中的成员变量和方法,匿名类的类体中不可以声明static成员变量和static方法。
⑷由于匿名类是一个子类,但没有类名,所以用匿名类创建对象时,要直接使用父类的构造方法。
尽管匿名类创建的对象没有经过类声明的步骤,但匿名对象的引用可以传递给一个匹配的参数。
比如,用户程序中午有如下方法:
void f (A a){
}
今天就这些明天继续gogogo!