星空网 > 软件开发 > ASP.net

C#中的接口实现多态

我们都知道虚方法实现多态,抽象方法实现多态等,我们今天来看看如何使用接口实现多态

1.首先我们先要来了解了解什么是接口,它存在的意识

    01.接口就是为了约束方法的格式(参数和返回值类型)而存在的

    02.接口可以实现多继承,弥补单继承的缺陷。

  03.接口可以看成是一个特殊的抽象类,通过反编译看源码可知

    04.接口中方法不用访问修饰符,因为CLR会自动添加,并且不能有方法体

    05.如果一个类实现了某个接口,就得实现该接口中所有的方法

    06.接口要谨慎使用,防止出现接口污染!

    07.接口仅仅代表一种能力,实现该接口的类和接口没有继承关系

    08.接口是用来实现的,类是用来继承的。

    09.其实很多时候,看似可以不用接口,因为接口就是一个方法的约定,

    表明你这个类必须要有某些方法,但是不写接口也可以有这些方法,用了接口,

    就可以使用接口变量,统一调用,实现多态

   10.接口中只能定义方法,不能定义变量。

 

下面我们举个用接口实现多态的例子:

01.新建一个飞的接口

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace 接口{  //飞的接口  public interface IFly  {    //接口中方法不用访问修饰符,因为CLR会自动添加,并且不能有方法体    void Say();  }}

02.创建一个吃的接口

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace 接口{  //吃的接口  public interface IEat  {    //接口中方法不用访问修饰符,因为CLR会自动添加,并且不能有方法体    void eat();  }}

03.创建一个鸟类来实现飞的接口和吃的接口

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace 接口{  //鸟实现飞的接口和吃的接口   public class Grid:IFly,IEat  //注意 接口:接口叫继承 ,类:接口叫实现  {    //如果一个类实现了某个接口,就得实现该接口中所有的方法    public void Say()    {      Console.WriteLine("鸟在飞");    }    public void eat()    {      Console.WriteLine("鸟在吃");    }  }}

04.创建一个飞机类实现飞的接口

using System;using System.Collections.Generic;using System.Globalization;using System.Linq;using System.Text;using System.Threading.Tasks;namespace 接口{  //飞机实现飞的接口  public class Plan:IFly  {    public void Say()    {      Console.WriteLine("飞机在飞");    }  }}

05.在Main方法实现调用

 

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace 接口{  class Program  {    static void Main(string[] args)    {      //定义飞接口数组实例化对象      IFly[] iFlies =      {        new Grid(),         new Plan()      };      //循环数组调用方法实现多态      foreach (IFly iFly in iFlies)      {        iFly.Say();      }      //鸟吃实例化对象      IEat iEats = new Grid();      //调用方法实现多态      iEats.eat();            Console.ReadLine();    }  }}

这样就可实现多态了,运行结果如下:

C#中的接口实现多态

 

注:如果有一个类要实现两个接口,不巧的是这两个接口(如:IFly,IPlay)中右两个同命名的方法(Eat)

我们都知道

如果一个类实现了某个接口,就得实现该接口中所有的方法

这怎么办呐?自有解决的方法的:

  我们就可以使用接口名.方法来实现

 

 //实现了IFly和IPlay两个接口,但两个接口中都有Eat方法  public class Dog:IFly,IPlay  {    //如果一个类实现了某个接口,就得实现该接口中所有的方法    //这样我们就可以使用接口名.方法来实现    void IFly.Eat()    {          }    void IPlay.Eat()    {          }  }

 




原标题:C#中的接口实现多态

关键词:C#

C#
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

在中国tiktok怎么才能用:https://www.goluckyvip.com/tag/81295.html
怎么上tiktok:https://www.goluckyvip.com/tag/81296.html
tiktok梯子:https://www.goluckyvip.com/tag/81297.html
tiktok爆品推荐:https://www.goluckyvip.com/tag/81298.html
tiktok如何入驻:https://www.goluckyvip.com/tag/81299.html
哪些因素:https://www.goluckyvip.com/tag/813.html
3月独立站新品观察:比基尼、连衣裙、凉鞋、止汗霜等夏季新品热推! :https://www.kjdsnews.com/a/1836553.html
3月独立站新品观察:比基尼、连衣裙、凉鞋、止汗霜等夏季新品热推! :https://www.goluckyvip.com/news/188216.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流