我有这两个类
class A {
public void foo1() {
...;
foo2();
...;
}
protected abstract foo2();
}
class B extends A {
public foo2() {
......
}
我需要foo2是静态的,这样我就可以执行B.foo2(),但我也希望类A中的功能保持不变
有什么建议吗?
}
不能重写静态方法或将抽象方法实现为静态方法。
静态方法是在类定义上定义的,而不是在类实例上定义的。抽象方法是在类实例上定义的。
你说的话实际上没有意义。
虽然我不太明白你为什么需要这样做,但有一个变通方法:
class B {
@Override
public void foo() {
fooUtil();
}
public static void fooUtil() {
// your impl here
}
}
然后可以改为执行B.fooUtil()
,并使用其行为覆盖A.foo()
。