作者H45 (!H45)
站内java
标题Re: [问题] 不定长度引数的overloading问题
时间Mon Apr 7 23:13:32 2008
※ 引述《FatDevil (You Are The One!!)》之铭言:
: ※ 引述《H45 (!H45)》之铭言:
: : 此例 Father f = new Son();
: : f 的型别是 Father, 实体是 Son
: : 所以能够看到的 f 成员都是 Father 型别所定义的
: : 换言之 Son 型别里面新定义的成员都看不见
: : 因此 f.foo("test") 只可能是 Father 的 foo(String ... a) 型态
: : 然後因为 f 的实体是 Son, 而 Son 继承 Father
: : 所以 f.foo("test") 实际上是呼叫 Son 的 foo(String ... a)
: : 但是 Son 没有再定义 foo(String ... a)
: : 这意味着 Son 的 foo(String ... a) 是继承自 Father 的 foo(String ... a)
: : 也就是说 Son 的 foo(String ... a) 就是 Father 的 foo(String ... a)
: : 如果需要一个名称来称呼这个现象的话,这叫作 overload
: 恩 我不懂的是foo(String ... a) 本质应该是foo(String[] a)
: 在两个以上的String当引数的话,那没问题当然是呼叫foo(String ... a)
: 可是在只有一个String的引数的情形下呢?
: 他要怎麽去分辨要呼叫哪一个? 一个也是一个 多个也包含一个(看的懂吗XD)
: 因为overloading不就是用引数的差异来区分你呼叫的是哪一个method
: 这里就是我搞不清楚的地方@@
那就针对这一点来重新定义问题吧
public class Test {
public void foo(String ... a) {}
public void foo(String a) {}
public static void main(String args[]) {
Test t = new Test();
t.foo("test");
}
}
跑一跑这个程式就知道它会去呼叫哪一个罗!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 122.117.172.148
1F:→ forris:少写了 system.out.print 04/08 01:04
2F:推 slalala:x不觉得少写 这只是要传达概念 04/08 14:27