接口案例2(同名的外部调用)
/// <summary>
///这个是第二个接口的引用,<1> 外部对接口的访问,如果出现同名的参数或者方法,必须的指出他的父接口,即必须为显示的调用
///<2> 特别是在不清楚具体情况的前提下,最后是做的保守一点
/// </summary> public interface I_3_A
//此处定义一个接口包含一个方法J,一个属性
Count {
int Count { get; set; }
int J(int j);
}
public interface I_3_B //这里面也定义第二个接口包含一个方法Count,一个属性J,但注意这和上一个接口中的方法和属性同名称 { void Count(int i);
double J(double j);
}
public interface I_3_C : I_3_A, I_3_B
{ }
public class I_3_L
{
public void Sum(I_3_C thc)
{
thc.Count(); //错误,具有二义性
thc.Count = 1; //错误。具有二义性
thc.Count(1); //错误,具有二义性
((I_3_A)thc).Count = 1; //正确
((I_3_B)thc).Count(1);
((I_3_A)thc).J(1);
((I_3_B)thc).J(1);
thc.J(1.0);
//这里面还牵扯到一个隐式调用的问题,当我们传入的参数为float类型的参数,这样的话隐式调用的就是接口I_3_B中的J这个方法、同样的道理下面这个方法就是调用的方法I_3_A
thc.J(1);
}
}