目录
准备工作
匿名内部类和抽象类型(也就是接口以及抽象类)关系密切。首先先创建一个接口和一个抽象类
package com.javaeasy.anonymousclass;
public interface AnInterface {
void method ();
}
上面的接口定义了一个抽象的方法method(),没有什么特殊之处
抽象类AnAbstractClass进行创建
package com.javaeasy.anonymousclass;
public abstract class AnAbstractClass {
public AnAbstractClass(int variable) {
}
public AnAbstractClass() {}
public abstract void method();
}
匿名内部类语法注意:
使用内部类没有名字;
不能给匿名内部类添加构造方法;
匿名内部类无法显示地继承某个类或者实现某个接口;
匿名内部类没有修饰符;
使用一个没有名字的类,定义匿名内部类和创建一个匿名内部类对象的语法是绑在一起的
new 抽象类型名(构造方法实际参数){
实现抽象类型中的抽象方法
}
使用接口使用匿名类
语法中的“构造方法实际参数”必须是空的,因为接口是没有构造方法的,而匿名类也是没有构造方法。
创建的不是接口对象,而是一个没有名字的、实现了这个接口的类对象、
通过抽象类使用匿名类
package com.javaeasy.anonymousclass;
public class UseAnonymous {
AnAbstractClass absCls = new AnAbstractClass() {
public void method () {
}
};
}
通过上面代码可以看出来,通过抽象类或接口来使用匿名类的语法是相近的。核心部分都是对于抽象类型的抽象方法,在匿名类中具有体现。