抽象类是不能实例化的。但可以通过继承实现其抽象方法,然后创建实例或者可以创建匿名类来使用。
如:
抽象类: Person有一抽象方法say()
public abstract class Person {
abstract void say();
}
继承:
class Jim extends Person{
@Override
void say() {
System.out.println("Hi my name is Jim!");
}
}
匿名类:
Person p = new Person() {
@Override
void say() {
System.out.println("Hello");
}
};
这里看上去是真像创建了对象。
接口大致也是一样的。因此在有一篇博文中的Callback,为什么要通过匿名类来创建就是这个原因。