C#接口

Posted 代码

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#接口相关的知识,希望对你有一定的参考价值。

接口是什么

接口是一种用来定义程序的协议,它描述可属于任何类或结构的一组相关行为。接口可有方法、属性、事件和索引器或这四种成员的任何组合类型,但不能包含字段。接口只包含了成员的声明,在继承的类中进行实现。

接口的特点

接口只做声明。
所有接口成员的默认访问类型都是public。
接口不能直接实例化。
必须实现接口的所有方法。
C#是单继承,利用接口可以实现多继承。

接口的声明

    public interface Animalone    {        //接口方法不能用修饰符修饰
        void ToSpeak();
    }

接口的实现

    public class Catone : Animalone
    {        
       public void ToSpeak()        {            Console.Write("喵喵喵\r\n");        }    }
   public class Dogone : Animalone    {
       public void ToSpeak()        {            Console.Write("汪汪汪\r\n");        }    }    
   public class birdone : Animalone    {        
       public void ToSpeak()        {            Console.Write("喳喳喳\r\n");        }    }

接口的继承

    //接口继承
    //C# 单继承,使用接口可以继承多个基类
    public interface Animaltwo : Animalone
    {        
       void EatFood();    }    //继承子接口时,要实现所有接口的方法    public class Cattwo : Animaltwo    {        
       public void EatFood()        {            Console.Write("猫粮\r\n");        }        
       public void ToSpeak()        {            Console.Write("喵喵喵\r\n");        }    }

显示接口的实现

//显示接口实现
    interface AnimalThree 
    {        
       void Move();    }    interface Animalfour    {        
       void Move();    }    
   public class Cat : AnimalThree, Animalfour    {        
       void AnimalThree.Move()        {            Console.Write("run\r\n");        }        
       void Animalfour.Move()        {            Console.Write("swarm\r\n");        }    }

完整代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace TestInterface {    //接口    //定义一个接口,只能做方法声明,继承自接口的类,必须实现接口方法    public interface Animalone    {        //接口方法不能用修饰符修饰        void ToSpeak();    }    
   public class Catone : Animalone    {        
       public void ToSpeak()        {            Console.Write("喵喵喵\r\n");        }    }    
   public class Dogone : Animalone    {
       public void ToSpeak()        {            Console.Write("汪汪汪\r\n");        }    }
   public class birdone : Animalone    {
       public void ToSpeak()        {            Console.Write("喳喳喳\r\n");        }    }    
   public class zooone    {        public void Speak(Animalone animals)        {            animals.ToSpeak();        }    }    
   //接口继承    //C# 单继承,使用接口可以继承多个基类    public interface Animaltwo : Animalone    {        
       void EatFood();    }    //继承子接口时,要实现所有接口的方法    public class Cattwo : Animaltwo    {
       public void EatFood()        {            Console.Write("猫粮\r\n");        }        
       public void ToSpeak()        {            Console.Write("喵喵喵\r\n");        }    }    
   public class zootwo    {        public void EatFood(Animaltwo animals)        {            animals.EatFood();        }        
       public void Tospeak(Animaltwo animals)        {            animals.ToSpeak();        }    }    
   //显示接口实现    interface AnimalThree    {        
       void Move();    }    interface Animalfour    {        
       void Move();    }    
   public class Cat : AnimalThree, Animalfour    {        
       void AnimalThree.Move()        {            Console.Write("run\r\n");        }        
       void Animalfour.Move()        {            Console.Write("swarm\r\n");        }    }    
   class Program    {        static void Main(string[] args)        {            zooone z = new zooone();            z.Speak(new Catone());            z.Speak(new Dogone());            z.Speak(new birdone());            zootwo ztwo = new zootwo();            ztwo.EatFood(new Cattwo());            ztwo.Tospeak(new Cattwo());                        Cat cat = new Cat();            AnimalThree three = cat;            three.Move();            Animalfour four = cat;            four.Move();            Console.Read();        }    } }


参考资料

https://docs.microsoft.com/zh-cn/dotnet/csharp/programming-guide/interfaces/

C# 接口《通俗解释》https://www.cnblogs.com/hamburger/p/4681681.html

以上是关于C#接口的主要内容,如果未能解决你的问题,请参考以下文章

c#代码片段快速构建代码

此 Canon SDK C++ 代码片段的等效 C# 代码是啥?

C#常用代码片段备忘

优化 C# 代码片段、ObservableCollection 和 AddRange

VS2015使用技巧 打开代码片段C#部分

记录C#常用的代码片段