java中的抽象静态类给出错误非法组合修饰符

Shi*_*hra 4 java static extends abstract

abstract class AbstractCase2 {
    abstract static void simpleMethod1();//giving error
}

class Case2 extends AbstractCase2 {
    static void simpleMethod1() {
    System.out.println("Within simpleMethod1");
}
    public static void main(String args[]) {            
    simpleMethod1();            
    System.out.println("with AwM");
    }     
}
Run Code Online (Sandbox Code Playgroud)

得到错误:

C:\>javac Case2.java
Case2.java:8: error: illegal combination of modifiers: abstract and static
        abstract static void simpleMethod1();
                      ^
1 error
Run Code Online (Sandbox Code Playgroud)

Lok*_*esh 12

静态方法如何抽象?静态方法没有被覆盖!!

如果要使方法抽象化,请将其设置为非静态方法

抽象方法正在设计构造.您创建抽象方法是因为您希望子类覆盖它们,但静态方法与类而不是它们的实例相关联,因此无法覆盖它们.

  • 为什么我不能告诉编译器其中一个子类将实现静态方法?这看起来很荒谬。 (2认同)

Jop*_*ops 7

static abstract 让你的编译器轰动一时.

你是从不同的方向拉它.

static:嘿编译器,这是我的方法的代码,随时可以在需要时使用,即使你没有创建实例.

abstract:嘿编译器,我将把代码放在我的方法中,在其中一个子类上.

编译器:你有代码还是什么?不好了!让我抛出一个错误......