package p; class A { public void m(int i, String... names) { for (String name : names) { System.out.println(name); } } } class B extends A { public void m(int i, String[] names) { for (String name : names) { System.out.println(name); } } } class C extends B { public void m(int i, String... names) { System.out.println(names[i]); names= new String[0]; } } class Client { { new A().m(0); new B().m(1, new String[] {"X"}); new C().m(2, new String[] {"X", "Y"}); new C().m(2, "X", "Y", "Z"); } }