接口是什么
接口是一种用来定义程序的协议,它描述可属于任何类或结构的一组相关行为。接口可有方法、属性、事件和索引器或这四种成员的任何组合类型,但不能包含字段。接口只包含了成员的声明,在继承的类中进行实现。
接口的特点
接口只做声明。
所有接口成员的默认访问类型都是public。
接口不能直接实例化。
必须实现接口的所有方法。
C#是单继承,利用接口可以实现多继承。
接口的声明
publicinterfaceAnimalone{ //接口方法不能用修饰符修饰voidToSpeak(); }
接口的实现
publicclassCatone : Animalone{ publicvoidToSpeak() { Console.Write("喵喵喵\r\n"); } } publicclassDogone : Animalone{ publicvoidToSpeak() { Console.Write("汪汪汪\r\n"); } } publicclassbirdone : Animalone{ publicvoidToSpeak() { Console.Write("喳喳喳\r\n"); } }
接口的继承
//接口继承//C# 单继承,使用接口可以继承多个基类publicinterfaceAnimaltwo : Animalone{ voidEatFood(); } //继承子接口时,要实现所有接口的方法publicclassCattwo : Animaltwo{ publicvoidEatFood() { Console.Write("猫粮\r\n"); } publicvoidToSpeak() { Console.Write("喵喵喵\r\n"); } }
显示接口的实现
//显示接口实现interfaceAnimalThree{ voidMove(); } interfaceAnimalfour{ voidMove(); } publicclassCat : AnimalThree, Animalfour{ voidAnimalThree.Move() { Console.Write("run\r\n"); } voidAnimalfour.Move() { Console.Write("swarm\r\n"); } } 完整代码```c#usingSystem; usingSystem.Collections.Generic; usingSystem.Linq; usingSystem.Text; usingSystem.Threading.Tasks; namespaceTestInterface{ //接口//定义一个接口,只能做方法声明,继承自接口的类,必须实现接口方法publicinterfaceAnimalone { //接口方法不能用修饰符修饰voidToSpeak(); } publicclassCatone : Animalone { publicvoidToSpeak() { Console.Write("喵喵喵\r\n"); } } publicclassDogone : Animalone { publicvoidToSpeak() { Console.Write("汪汪汪\r\n"); } } publicclassbirdone : Animalone { publicvoidToSpeak() { Console.Write("喳喳喳\r\n"); } } publicclasszooone { publicvoidSpeak(Animaloneanimals) { animals.ToSpeak(); } } //接口继承//C# 单继承,使用接口可以继承多个基类publicinterfaceAnimaltwo : Animalone { voidEatFood(); } //继承子接口时,要实现所有接口的方法publicclassCattwo : Animaltwo { publicvoidEatFood() { Console.Write("猫粮\r\n"); } publicvoidToSpeak() { Console.Write("喵喵喵\r\n"); } } publicclasszootwo { publicvoidEatFood(Animaltwoanimals) { animals.EatFood(); } publicvoidTospeak(Animaltwoanimals) { animals.ToSpeak(); } } //显示接口实现interfaceAnimalThree { voidMove(); } interfaceAnimalfour { voidMove(); } publicclassCat : AnimalThree, Animalfour { voidAnimalThree.Move() { Console.Write("run\r\n"); } voidAnimalfour.Move() { Console.Write("swarm\r\n"); } } classProgram { staticvoidMain(string[] args) { zooonez=newzooone(); z.Speak(newCatone()); z.Speak(newDogone()); z.Speak(newbirdone()); zootwoztwo=newzootwo(); ztwo.EatFood(newCattwo()); ztwo.Tospeak(newCattwo()); Catcat=newCat(); AnimalThreethree=cat; three.Move(); Animalfourfour=cat; four.Move(); Console.Read(); } } }
参考资料
https://docs.microsoft.com/zh-cn/dotnet/csharp/programming-guide/interfaces/
C# 接口《通俗解释》