多态是为了更上层抽象,便于扩展,静态是为了调用方便,但Java里静态方法一般是不能多态的。
我是这么做的,定义抽象类和抽象方法(多态),实例化的时候,把这个对象赋给该抽象类的一个静态属性(同类型),比如说叫current
然后在这个抽象类里定义静态方法,使用这个静态属性current,就相当于采用静态调用的方式,调用了一个实例对象的方法。
这样做有什么缺点么?
代码类似下下面这样的
public abstract class Database {
public static Database current;
public abstract void create2(); //抽象方法,可以多态
public static void create() {
current.create2();
}
}
调用的话直接Database.create()就可以了,不过这样使用只能是那种一般只需要一个实例的工具类。