接口的显式实现和隐式实现

参考 https://www.cnblogs.com/taomylife/p/4828453.html

1. 定义一个接口

public Interface ICategory

{

      string GetName();

}

2. 隐式实现该接口

public class Category:ICategory

{

      public string GetName()

       {

              return name;

       }

}

3. 显式实现该接口

public class Category:ICategory

{

       public string  ICategory.GetName()

        {

               return name;

         }

}

4. 隐式调用方式:

  隐式实现接口时,我们有两种方式调用实现接口的方法(GetName()),即:

  ICategory category=new Category();

  category.GetName();

  或

  Category category=new Category();

  categoty.GetName();

5. 显式调用方式:

  ICategory category=new Category();

  category.GetName();

4. 结论:

  1. 隐式实现接口时,接口和类(实现接口的类)都可以访问类中的方法;

  2. 显式实现接口时,只有通过接口来访问类中的方法;

  显式优点:

    1.隐藏了实现接口的类的实现代码

5. 总结:

  显式实现意味着函数签名上要显式的声明接口. 而显式实现的接口函数, 必须用接口来持有new出来的对象, 这样你在调用方法的时候, 是拿这个接口的定义去执行的, 只能看到这个接口里定义的函数.

  对实现这个接口的原对象来说, 其他的非接口里的public函数, 都是不可见的. 对使用者来说, 更加聚焦于对接口的使用, 也从另一方面助推使用者清楚自己是在对一类具有该接口的类型进行的操作, 而不是某个具体类型

  从设计和约束的角度讲, 显式的实现接口更加符合设计理念.

原文地址:https://www.cnblogs.com/wmalloc/p/11775804.html