将派生类中的抽象方法实现为静态方法



我有这两个类

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()

最新更新