.Net C# 接口 (Interface)

.Net C# 接口 (Interface)

什么是接口?

当我们租房或者买房的时候,我们需要有租房或购房合同,合同内写明双方需要遵守的规则。

在代码中,如果双方协作实现一个功能,例如小明实现一个功能给小红调用。

如果没有提前沟通好,小红是不知道小明写了哪些方法和属性的。

所以在程序开发协作中,也需要一个合同,即语法合同,也就是接口。

在合同内声明好双方需要遵守的规则,然后小明按照规则实现,小红按照规则调用。

如何声明

我们可以在接口内声明方法、事件、属性。如下

interface ICar
{
    string Name{get;set;}
    void Start();
}

接口使用 interface 关键字声明,它与类的声明类似。接口声明默认是 public 的。

然后小明就可以按照这个接口实现:

public class BM : ICar
        {
            public string Name { get; set; } ="宝马";
            public void Start()
            {
                Console.WriteLine(Name+"启动了!");
            }
        }

小红就可以这么调用:

   class Program
    {
        static void Main(string[] args)
        {
            ICar car = new BM();
            car.Start();
            Console.ReadKey();
        }
    }

输出结果:

宝马启动了!

由此得出

接口包含非抽象类或结构必须实现的一组相关功能的定义

接口的优点

如果我们需要将宝马更换成马自达呢?
我们只需这样做,首先实现马自达,并让马自达继承ICar接口

    public class MZD : ICar
    {
        public string Name { get; set; } = "马自达";

        public void Start()
        {
            Console.WriteLine(Name + "启动了!");
        }
    }

然后小红这样调用

   class Program
    {
        static void Main(string[] args)
        {
            ICar car = new MZD();
            car.Start();
            Console.ReadKey();
        }
    }

输出结果:

马自达启动了!

是不是改动特别小?如果不使用接口,我们进行替换的时候,就需要改动所有调用宝马对象的地方。更换成接口,我们可以很好地实现代码解耦。

后记

本人不是大佬,只是道路先行者,在落河后,向后来的人大喊一声,这里有坑,不要过来啊!

纵然如此,依旧有人重复着落河,重复着呐喊······

个人博客网站 Blog

技术交流Q群: 1012481075 群内有各种流行书籍资料

文章后续会在公众号更新,微信搜索 OneByOneDotNet 即可关注。

你的一分鼓励,我的十分动力,点赞免费,感恩回馈。喜欢就点赞评论吧,双击6666~

技术交流Q群: 1012481075 群内有各种流行书籍资料
文章后续会在公众号更新,微信搜索 OneByOneDotNet 即可关注。
你的一分鼓励,我的十分动力,点赞免费,感恩回馈。喜欢就点赞评论吧,双击6666~
本网站(网站地址)刊载的所有内容,包括文字、图片、音频、视频、软件、程序、以及网页版式设计等均在网上搜集。
访问者可将本网站提供的内容或服务用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯本网站及相关权利人的合法权利。
除此以外,将本网站任何内容或服务用于其他用途时,须征得本网站及相关权利人的书面许可,并支付报酬.
本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站,予以删除.
转载请注明出处
作者昵称:OneByOneDotNet
作者链接:https://onebyone.icu/user/1
网站标题:OneByOne DotNet
网站地址:https://onebyone.icu
文章标题:.Net C# 接口 (Interface)
文章链接:https://onebyone.icu/archives/1428
原文出处:
原文链接:
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

发表评论

邮箱地址不会被公开。 必填项已用*标注

WeChat
WeChat
QQ
QQ
返回顶部