为什么下面的代码显示“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
上的方法。