相关疑难解决方法(0)

多态性与静态方法

我对此代码有疑问

public Car {
    public static void m1(){
        System.out.println("a");
    }
    public void m2(){
        System.out.println("b");
    }
}

class Mini extends Car {
    public static void m1() {
        System.out.println("c");
    }
    public void m2(){
        System.out.println("d");
    }
    public static void main(String args[]) {
        Car c = new Mini();
        c.m1();
        c.m2();       
   }
}
Run Code Online (Sandbox Code Playgroud)

我知道多态不适用于静态方法,只适用于实例方法.并且覆盖不适用于静态方法.

因此我认为这个程序应该打印出来:c,d

因为c调用m1方法,但它是静态的,所以它不能覆盖并且它在类Mini而不是Car中调用方法.

它是否正确?

但是,我的教科书说答案应该是:a,d

这是一个错字吗?因为我现在有点困惑.

请清楚这一点,谢谢.

java polymorphism static

10
推荐指数
1
解决办法
6395
查看次数

标签 统计

java ×1

polymorphism ×1

static ×1