zoukankan      html  css  js  c++  java
  • 实现接口与显式实现接口的区别

    原文:http://www.cnblogs.com/chenxizhang/archive/2008/08/22/1274265.html

    在实现接口的时候,VS提供了两个菜单,一个是"实现接口",一个是"显式实现接口",它们到底有何不一样呢

    我们来比较一下看看

    1.首先假设我们有一个接口

    public interface ICustomer
    {
        void SomeMethod();
    }

    2.如果是"实现接口",那么代码大致如下

    public class Customer:ICustomer
    {

        #region ICustomer 成员

        public void SomeMethod()
        {
            throw new NotImplementedException();
        }

        #endregion
    }

    3.如果是"显式实现接口",那么代码大致如下

    public class Customer:ICustomer
    {

        #region ICustomer 成员

        void ICustomer.SomeMethod()
        {
            throw new NotImplementedException();
        }

        #endregion
    }

    大家看到差别了吧?显式实现的方式,那些方法都会加上一个前缀的。但是,这到底意味着什么呢?

    如果是实现接口

    public class DAL {
        /// <summary>
        /// 如果我们是直接实现接口的话,那么既可以用接口调用方法,也可以用具体类调用方法
        /// </summary>
        public void GetCustomer() {
            Customer customer = new Customer();
            customer.SomeMethod();
        }

        public void GetCustomer2() {
            ICustomer customer = new Customer();
            customer.SomeMethod();
        }
    }

    如果是显式实现接口

    public class DAL {
        /// <summary>
        /// 如果我们是显式实现接口的话,那么要访问里面的方法就只能是通过接口来调用,而不能通过具体类来做
        /// </summary>
        public void GetCustomer() {
            ICustomer customer = new Customer();
            customer.SomeMethod();
        }
    }

    现在大部分的系统为了保证扩展性,都广泛地使用接口。显式实现接口,可以隐藏具体类的复杂性。

  • 相关阅读:
    20200318
    20200317
    Thinkphp 操作多个数据库
    base格式图片转文件存储
    Thinkphp POST 和 GET 传值
    Thinkphp调用微信扫一扫实例,学会再也不怕客户在微信提的奇葩要求了
    centos 安装ngnix mysql php
    PHP 区分微信、支付宝、QQ扫码
    PHP秒数计算时分秒
    Thinkphp 获取访问者的ip
  • 原文地址:https://www.cnblogs.com/ghw0501/p/4802298.html
Copyright © 2011-2022 走看看