首页 新闻 会员 周边 捐助

显示实现接口的相关问题

0
悬赏园豆:5 [已解决问题] 解决于 2009-09-26 17:20

假如我现在有一个接口

public interface ITax
{
    double Calculate();
}

我现在显示的实现这个接口

public class ChinaTax:Tax
{

    double ITax.Calculate()
    {
        return (Constant.BASE_STATAR + (Constant.BASE_STATAR * 0.1)) * 0.4;
    }

    #endregion
}

在这里我想请问 这里为什么可以ITax.Calculate()这样来实现这个接口中的方法。这是语法规定吗?

接下来如果我要调用ChinaTax这个类中的Calculate()这个方法的时候我必须这样来访问

ITax t=new ChinaTax();

然后通过t来访问这个方法 t.Calculate();

我想请问下 这里为什么可以ITax t=new ChinaTax();这样实例化。

希望各位帮帮解释下

yzy的主页 yzy | 菜鸟二级 | 园豆:317
提问于:2009-09-18 18:08
< >
分享
最佳答案
0

显式接口实现是一种语法,但并不是强制的,其主要作用是防止不同接口中的同签名方法的存在,如:

public interface IA {

  void Do();

}

public interface IB {

  void Do();

}

public class MyClass : IA, IB {

  public void Do() { Console.WriteLine("MyClass Do"); } //标准实现

  void IA.Do() { Console.WriteLine("IA Do"); } //显式实现
}

在这种情况下,如果使用:

MyClass c = new MyClass();

c.Do();

会输出MyClass Do

使用:

IB c = new MyClass();

c.Do();

也会输出MyClass Do

使用:

IA c = new MyClass();

c.Do();

会输出IA Do

这样就通过接口的显式实现区别了IA和IB的Do方法

收获园豆:3
Gray Zhang | 专家六级 |园豆:17610 | 2009-09-21 09:46
其他回答(1)
0

1.

隐示实现接口和类都可以访问:

你可以再ChinaTax隐式实现Calculate 这个方法。

显示实现只有接口可以访问。

例如: ChinaTax tt = new ChinaTax(); 如果你是显示实现,则无法访问Calculate方法。

2.这里为什么可以ITax t=new ChinaTax();这样实例化。

ChinaTax是接口的一种实现类。

收获园豆:2
winzheng | 园豆:8797 (大侠五级) | 2009-09-18 19:15
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册