C#中,接口的隐式实现和显示实现

在C#中,接口的实现分为:隐式实现和显式实现。如果类或者结构要实现的是单个接口,可以使用隐式实现,如果类或者结构继承了多个接口那么接口中相同名称成员就要显式实现。显示实现是通过使用接口的完全限定名来实现接口成员的。

比如:当一个类A要实现两个接口I1,I2时,而I1,I2中都一个Test();的方法,在实现时会存在二义性,这时就需要显示的实现接口,在调用时要明确调用者。

目前常用的方式:

隐示实现:

public interface IReview
{
    void GetReviews();
}
public class ShopReview :IReview
{
    public void GetReviews(){}
}

IReview rv = new ShopReview();

rv.GetReviews();

ShopReview rv = new ShopReview();

rv.GetReviews();


这是不管是接口变量 rv ,还是对象变量 rv ,都可以调用GetReviews这个方法。

 

还有一种方式是显示实现

public interface IReview
{
    void GetReviews();
}
public class ShopReview :IReview
{
    void IReview.GetReviews(){} //注意:接口.方法名
}

//通过这种方式的接口实现。GetReviews就只能通过接口来调用:

IReview rv = new ShopReview();

rv.GetReviews();

//下面的这种方式将会编译错误:

ShopReview rv = new ShopReview();

rv.GetReviews(); 


 

结论:

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

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

显示实现接口的优势:

1. 隐藏代码的实现

2. 在使用接口访问的系统中,调用者只能通过接口调用而不是底层的类来访问。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值