为什么下面的代码显示“Main”?

public class Main
{
    public static void method()
    {
        System.out.println("Main");
    }

    public static void main(String[] args)
    {
        Main m = new SubMain();
        m.method();
    }
}

class SubMain extends Main
{
    public static void method()
    {
        System.out.println("SubMain");
    }
}

在运行时,m指向Submain的实例,因此在概念上应打印“SubMain”。

最佳答案

静态方法在变量的编译时类型上解析。 m的类型为Main,因此调用Main中的方法。

如果将其更改为SubMain m ...,则将调用SubMain上的方法。

09-30 20:51