我只是在创建一个程序。我有一个抽象类Foo(实现了其他东西)和一个扩展Foo的类栏。我计划有几个其他扩展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类“其他东西”和“抽象”类“Foo”中。任何方法都可以做到这一点,或者我坚持将此方法添加到我需要的每个类中。我知道这并不难,只是更愿意强制使用此方法。
我认为没有办法继承静态方法。但应该没有必要,因为你可以直接从你的顶级类调用静态方法,只要确保它们是公共的。
请记住:类的静态方法不应该用于建模对象行为,静态方法的有效用例通常是不操作底层对象状态的例程。如果您不熟悉面向对象的设计,值得一看,以使您的代码更易于维护。
如果你想在Bar中从Foo调用静态方法,你可以在Bar中调用Foo. st杀人法():
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;
}
}