Java类扩展了Abstract类,但必须具有静态方法

时间:2014-10-12 18:40:45

标签: java interface abstract-class static-methods factory

我只是在玩创建程序。我有一个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。有任何方法可以做到这一点,或者我坚持将这个方法添加到我需要的每个类。我知道这并不是很难,只是希望强迫这种方法存在。

1 个答案:

答案 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;  
  }  
}