【发布时间】:2011-06-25 01:22:32
【问题描述】:
我有一个简单直接的问题:
我有这个简单的课程:
public class A
{
public void m(Object o)
{
System.out.println("m with Object called");
}
public void m(Number n)
{
System.out.println("m with Number called");
}
public static void main(String[] args)
{
A a = new A();
// why will m(Number) be called?
a.m(null);
}
}
更新:实际上是实际调用 Number 的方法。很抱歉造成混乱。
如果我调用 a.m(null) 它会调用带有 Number 参数的方法。
我的问题是:为什么会这样?这是在 java 语言规范中的什么地方指定的?
【问题讨论】:
-
... 因为
null不是Number对象,所以属于更广义的Object桶。 -
这很有趣,因为在我的机器上(在 Eclipse 上运行)它总是默认为 Number 方法
-
-1 这是重载,而不是覆盖
标签: java polymorphism overloading