zoukankan      html  css  js  c++  java
  • C# override,new 的区别+C# 接口的显示实现和隐示实现

    将大概意思列举一下:

    override重写虚方法,那么就只剩下重写以后的方法;
    new隐藏基类的方法,那么基类的方法和当前类的方法同时存在只是被隐藏了

    这里就引出了我想表达的意思:面向对象中隐藏、重写、重载的概念。这几个概念在我们讨论面向对象的时候经常说到。

    隐藏:new

    重写:override

    重载:其实是一个方法的多种实现方式,但方法的名称是相同的

    public class Transport
    {
        public Transport(){}
        public virtual void Go(){}
        public virtual void Go(Road road){}
    }
    public class Car :Transport
    {
        public override void Go()
        public new void Go(Road road){}
    }

    大家可以仔细看一下Go这个方法,上面的三种形式都提到。看完这个以后大家对面向对象的隐藏、重写、重载应该知道如何表达了。

    C# 接口的显示实现和隐示实现

    接口的实现很多人都知道,但接口的实现方式分显示实现隐示实现不知道是不是很多人知道呢!但我觉的公司技术部里很少提到这个,就想起来写写这篇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架构的系统中。避免我们总是要求大家一定要通过接口访问。因为现在不用接口访问也不行了。

  • 相关阅读:
    二分图 洛谷P2055 [ZJOI2009]假期的宿舍
    并查集 洛谷P1640 [SCOI2010]连续攻击游戏
    贪心 洛谷P2870 Best Cow Line, Gold
    贪心 NOIP2013 积木大赛
    快速幂 NOIP2013 转圈游戏
    倍增LCA NOIP2013 货车运输
    树形DP 洛谷P2014 选课
    KMP UVA1328 Period
    动态规划入门 BZOJ 1270 雷涛的小猫
    KMP POJ 2752Seek the Name, Seek the Fame
  • 原文地址:https://www.cnblogs.com/leeolevis/p/1618336.html
Copyright © 2011-2022 走看看