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

时间:2014-10-18 02:19:19

标签: java inheritance static abstract

我有这两个班级

class A {

public void foo1() { 
...;     
foo2();       
...;        
}


protected abstract foo2();

}




class B extends A {

public foo2() {       
......    
}

我需要foo2是静态的,所以我可以做B.foo2()但我也希望保留A类中的功能.n

有什么建议吗?

}

2 个答案:

答案 0 :(得分:0)

您不能覆盖静态方法或将抽象方法实现为静态方法。

静态方法是在类定义上定义的,而不是在类实例上定义的。抽象方法是在类实例上定义的。

答案 1 :(得分:0)

你所说的事实上没有意义。

虽然我不明白为什么你需要这样做,但有一个解决方法:

class B {
    @Override 
    public void foo() {
        fooUtil();
    }

    public static void fooUtil() {
        // your impl here
    }
}

然后,您可以改为B.fooUtil(),并使用其行为覆盖A.foo()