【发布时间】:2013-09-15 13:22:47
【问题描述】:
我想要拥有所有具有相同方法的类家族。由于此方法非常简单,我想将其设为最终静态,例如
class A {
public static final String createSth () { }
}
(实际上这个方法只返回字符串)。
有时使用相同的方法对所有 A、B、C 类进行大转换会很有用。因此我想创建母班。
class abstract Mother {
public static abstract String createSth () { }
}
然后为我的所有 A、B、C 类 ex 添加适当的扩展。 A 类扩展了母亲。
不幸的是,Java 不允许这样做。我想知道为什么?
当然,我可以删除 static final 修饰符,然后一切正常。但是另一方面,如果每个子类都返回一个不能以任何方式修改的常量 String,为什么不呢?
你可以问这样的构造的目的是什么?
我只是想创建数据库 sql 字符串。对于每个表,我创建了一个单独的类,作为 createSth 方法的结果,我想返回为该类创建表的 sql。
接口也无济于事。
唯一的解决方案似乎是从 Mother 类的 createSth 方法中删除抽象修饰符。但是后来我不允许对 Mother 类进行大写并为孩子调用 createSth 方法。所以我必须删除子类的静态修饰符。
总结为什么不允许抽象方法是静态的?好的,到这里我也能理解了,但是为什么非静态抽象方法不允许被子类中的静态方法替换呢?
【问题讨论】:
-
返回一个不能“以任何方式修改”的字符串有什么关系?你认为方法的 final 修饰符有什么作用?
-
抽象静态方法的目的是什么?
标签: java