我有两个函数
void foo(a atmp) {};
void foo(b atmp) {};我有一个变量这样定义:
a bi = new b();我这样调用:
foo(bi);这时,将进入第一个函数,也即 foo(a atmp)
然而 这和我的本意违背了 我想调用的是第二个函数问:肿么办
void foo(a atmp) {};
void foo(b atmp) {};我有一个变量这样定义:
a bi = new b();我这样调用:
foo(bi);这时,将进入第一个函数,也即 foo(a atmp)
然而 这和我的本意违背了 我想调用的是第二个函数问:肿么办
这个foo是现成的代码。。我没有能力改动它
a bi = new b();改成
b bi=new b();
这样会调用void foo(b atmp) {};方法重载是在编译时绑定,貌似会根据变量的类型选择方法体
class A
{
void myfoo()
{
foo((A)this);
}
}class B extends A
{
void myfoo()
{
foo((B)this);
}
}
这不就得了。
{
a.myfoo(); 这样就OK了吧?
}
getMethod(...).invoke(...) 就可以调用啦