我只是在玩创建程序。我有一个Abstract Class Foo(实现OtherThing)和一个扩展Foo的Class Bar。我计划扩展其他几个扩展Foo的类,并希望确保它们都具有静态方法。
public abstract class Foo implements OtherThing {//....}
public class Bar extends Foo{
public static Map<Enum, List<AnotherEnum> getSomeThingMap(){
create someThingMap;
someThingMap.put(Enum, List<AnotherEnum>);
return someThingMap;
}
}
我需要任何扩展Foo的类来使用此方法,以便我的工厂创建类。我可以手动将静态方法添加到需要它的每个类。每个Bar类都会创建一个略有不同的Map。我尝试将静态方法添加到Interface类OtherThing和Abstract类Foo。有任何方法可以做到这一点,或者我坚持将这个方法添加到我需要的每个类。我知道这并不是很难,只是希望强迫这种方法存在。
答案 0 :(得分:0)
我认为没有办法继承静态方法。但它没有必要,因为您可以直接从顶级类调用静态方法,只需确保它们是公共的。
只是要记住:类的静态方法不应该用于建模对象行为,静态方法的有效用例通常是不操纵底层对象状态的例程。如果您不熟悉面向对象的设计,那么值得一看,以使您的代码更易于维护。
我的用例如果你想从Bar中的Foo调用一个静态方法,你可以在Bar中调用Foo.staticMethod():
public abstract class Foo implements OtherThing {//....}
public class Bar extends Foo{
public static Map<Enum, List<AnotherEnum> getSomeThingMap(){
create someThingMap;
//Call your static Method from Foo here
Foo.staticMethod()
someThingMap.put(Enum, List<AnotherEnum>);
return someThingMap;
}
}