求助:关于函数参数不同的调用问题!!!
有一段代码: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 void visit(ElementGroup elementGroup)这个函数的,因为传入的是ElementGroup类的对象。
------解决方案--------------------调用第一个,然后出错