在下面的代码中
class A {
public void v(int... vals) {
System.out.println("Super");
}
}
class B extends A {
@Override
public void v(int[] vals) {
System.out.println("Sub");
}
}
然后我可以打电话给new B().v(1, 2, 3);//print Sub rather than Super
这很荒谬但效果很好。如果我B
改为
class B {
public void v(int[] vals) {
System.out.println("Not extending A");
}
}
调用new B().v(1, 2, 3);
将无效。您必须将其称为new B().v(new int[]{1, 2, 3});
,为什么?