接口(笔记)显示实现和隐式实现

一、显示实现和隐式实现。

看到这里不理解显示实现和隐式实现。到网上搜了一下。主要区别在于显示实现只能通过接口访问,而隐式实现则可以通过类和接口访问。

文章转到这里:

接口的实现很多人都知道,但接口的实现方式分显示实现隐示实现不知道是不是很多人知道呢!但我觉的公司技术部里很少提到这个,就想起来写写这篇blogs。

目前常用的方式:

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

这种方式是隐示实现

IReview rv = new ShopReview();rv.GetReviews();

ShopReview rv = new ShopReview();rv.GetReviews();

都可以调用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:在使用接口访问的系统中,调用者只能通过接口调用而不是底层的类来访问。

PS:可以运用到公司目前的接口+Sevice架构的系统中。避免我们总是要求大家一定要通过接口访问。因为现在不用接口访问也不行了

 

自己写的例子:

    public interface testinterface
    {
        void dosomething();
        void dosomethingelse();
    }

    public class class55 : testinterface
    {
        public void dosomething()
        {
            Console.WriteLine("hello world");
        }
        void testinterface.dosomethingelse()
        {
            Console.WriteLine("else");
        }
    }

        static void Main(string[] args)
        {
            //隐式实现,可通过类和接口访问
            class55 test = new class55();
            //通过类访问
            test.dosomething();
            //通过接口访问
            testinterface mytest = new class55();
            mytest.dosomething();
            //显示实现,只能通过接口
            testinterface xianshishixian = new class55();
            //通过接口访问
            xianshishixian.dosomethingelse();
            //通过接口访问隐式实现
            xianshishixian.dosomething();
        }

转载于:https://www.cnblogs.com/axyz/archive/2011/03/02/1969039.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值