Java 公共抽象静态方法-为什么不允许?

Java 公共抽象静态方法-为什么不允许?,java,Java,我希望有一个类家族,所有这些类都有相同的方法。由于这个方法非常简单,我想让它最终成为静态的,比如 class A { public static final String createSth () { } } (实际上,这个方法只返回字符串) 有时,使用相同的方法对所有这些A、B、C类进行上转换会很有用。因此,我想创建母亲班 class abstract Mother { public static abstract String createSth () { } } 然

我希望有一个类家族,所有这些类都有相同的方法。由于这个方法非常简单,我想让它最终成为静态的,比如

class A {
   public static final String createSth () { }
}
(实际上,这个方法只返回字符串)

有时,使用相同的方法对所有这些A、B、C类进行上转换会很有用。因此,我想创建母亲班

class abstract Mother {
       public static abstract String createSth () { }
}
然后为我的所有类A、B、C添加适当的扩展,例如,类A扩展母亲

不幸的是,Java不允许这样做。我想知道为什么

当然,我可以删除静态最终修改器,然后一切都好。但另一方面,如果每个子类返回的常量字符串以任何方式都不可修改,为什么不呢

你可以问这样一个建筑的目的是什么

我只想创建数据库sql字符串。对于每个表,我创建了一个单独的类,作为createSth方法的结果,我希望返回sql,为这个类创建一个表

接口两者都没有帮助

唯一的解决方案似乎是从母类的createSth方法中删除抽象修饰符。但是,我不被允许向母亲类上溯,也不被允许为孩子们调用createSth方法。所以我必须删除儿童类的静态修饰符


总结为什么抽象方法不允许是静态的?好的,在这里我甚至可以理解,但是为什么不允许非静态抽象方法被子类中的静态方法替换?

静态方法不会被继承,所以使它们抽象将毫无意义。

静态方法不会被继承,因此,使它们抽象将毫无意义。

静态
方法(就像
最终
私有
一样)无法重写,因此无法在派生类中实现它们,因此使它们
抽象
将毫无意义。

静态
方法(就像
final
private
一样)不能被重写,因此无法在派生类中实现它们,因此使它们
抽象
是没有意义的。

final
方法不会被
重写


静态
方法不会被
覆盖
,但它们可以在子类中被
隐藏。

最终
方法不会被
覆盖


静态
方法不会被
重写
,但它们可以在子类中被
隐藏。

返回一个“无论如何都不可修改”的字符串有什么关系?你认为方法的最后一个修饰符会做什么?抽象静态方法的目的是什么?返回一个不可修改的字符串有什么关系“可以以任何方式修改”很重要?你认为方法的最后一个修饰符会做什么?抽象静态方法的目的是什么?