关系如下:
A(type)--->X(type)---Y(type)
B(type)------------------
意思是,接口A、接口B都有type函数(而且签名一样),X实现type,Y继承自X,也实现了type函数。那么调用type的时候,调用哪个?
编译后的类Y,实际上同时保存两个type的来源。所以确实存在调用的问题。吾研究后,总结两个原则:
- 样子原则。比如吾把Y造型为A、X,调用的时候就会搜索来源于A的接口;B也是如此。
- 就近原则。比如直接调用Y的type,那么肯定是最近的那个。最近的是B的type。