我想要拥有所有具有相同方法的类家族。由于这种方法非常简单,我想让它成为最终静态的,比如
class A {
public static final String createSth () { }
}
(实际上这个方法只返回字符串)。
有时,使用相同的方法对所有 A、B、C 类进行大转换会很有用。因此,我想创建母班。
class abstract Mother {
public static abstract String createSth () { }
}
然后为我的所有 A、B、C 类 ex 添加适当的扩展。A 类扩展了母亲。
不幸的是,Java 不允许这样做。我想知道为什么?
当然我可以删除静态最终修饰符,然后一切正常。但另一方面,如果每个子类都返回一个不可修改的常量 String,为什么不呢?
你可以问这样的建设的目的是什么?
只是我想创建数据库 sql 字符串。对于每个表,我创建了一个单独的类,作为 createSth 方法的结果,我想返回为该类创建表的 sql。
接口也无济于事。
唯一的解决方案似乎是从 Mother 类的 createSth 方法中删除 abstract 修饰符。但是后来我不允许对 Mother 类进行大写并为孩子调用 createSth 方法。所以我必须删除子类的静态修饰符。
总结为什么不允许抽象方法是静态的?好的,我什至可以理解,但是为什么非静态抽象方法不允许在子类中被静态方法替换?