日期:2014-05-20  浏览次数:20723 次

求助:关于函数参数不同的调用问题!!!
有一段代码:IRenderingVisitor为一个接口
  在实际执行的时候,执行accept函数
  public void accept( IRenderingVisitor v ) {
  v.visit( this );
  }

实现IRenderingVisitor接口的v对象中,有两个函数visit,其中ElementGroup为实现IRenderingElement接口的一个类
public void visit(IRenderingElement element)

private void visit(ElementGroup elementGroup) 


在执行的时候,accept函数传入的是一个ElementGroup类的对象,两个visit函数应该会调用哪个?是调用IRenderingElement那个参数的函数还是ElementGroup参数的那个函数?很纠结,请大神指教~~~

谢谢!!!

------解决方案--------------------
类型正确的话自动匹配的
------解决方案--------------------
优先匹配参数类型完全一致的函数,但如果找不到则寻找参数类型为其父类的函数。

不过你这里是private,对于外部类的调用来说,是不可见的啊。。。
------解决方案--------------------
探讨

优先匹配参数类型完全一致的函数,但如果找不到则寻找参数类型为其父类的函数。

不过你这里是private,对于外部类的调用来说,是不可见的啊。。。

------解决方案--------------------
应该是调用private void visit(ElementGroup elementGroup)这个函数的,因为传入的是ElementGroup类的对象。
------解决方案--------------------
调用第一个,然后出错