5
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");
    }     
}

得到错误:

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

3 回答 3

14

静态方法如何抽象?静态方法不会被覆盖!!

如果你想让你的方法抽象,让它成为非静态的

抽象方法是设计结构。您创建抽象方法是因为您希望您的子类覆盖它们,但静态方法与类而不是它们的实例相关联,因此它们不能被覆盖。

于 2013-04-14T04:39:55.510 回答
8

static abstract让你的编译器大吃一惊。

你从不同的方向拉它。

static:嘿编译器,这是我的方法的代码,随时可以使用,即使您不创建实例。

摘要:嘿编译器,将来我会将代码放在我的方法中,放在其中一个子类上。

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

于 2013-04-14T05:16:49.123 回答
1

抽象和静态是非法组合,因为抽象方法没有主体,静态方法可以在没有抽象类的对象的情况下调用。当我们没有函数体时,我们如何调用该函数?我们不能在没有定义原型的情况下调用一个函数。

抽象函数可以是非静态的。这是因为非静态函数需要调用一个对象,并且只有当且仅当它覆盖其父类的所有抽象函数时,才能创建从抽象类继承的类的对象。所以,我们不能在不给父抽象函数一个主体的情况下创建一个对象,从而解决歧义。

于 2018-06-28T01:16:23.440 回答