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
方法不会被重写
静态
方法不会被覆盖
,但它们可以在子类中被隐藏。最终
方法不会被覆盖
静态
方法不会被重写
,但它们可以在子类中被隐藏。返回一个“无论如何都不可修改”的字符串有什么关系?你认为方法的最后一个修饰符会做什么?抽象静态方法的目的是什么?返回一个不可修改的字符串有什么关系“可以以任何方式修改”很重要?你认为方法的最后一个修饰符会做什么?抽象静态方法的目的是什么?