C# 接口使用方法
之前一直不理解接口这一概念,今天无意中翻书,网上查资料悟道其中的道理,现在工作没有用到interface这一块,怕以后会遇到忘记实现的方法便记录下来,哪里写的不对希望读者指出,话不多说,接下来看我对接口的理解。
1.接口说明:
接口为不同应用的实现提供了一中规范和约束,只要每个应用都遵守这种规范和约束,整个系统就可以得到有效的组织,从而为应用系统的低代价开发提供有效的途径。
接口用于描述一组类的公共方法/公共属性. 它不实现任何的方法或属性,只是告诉继承它的类《至少》要实现哪些功能,继承它的类可以增加自己的方法。
2.接口声明:
interface ISample { void f(int x); //方法 int att { get; set; } //属性(可读,可写) event EventHandler OnDraw; //事件 string this[int index] { get; set; } //索引器 }
3.接口使用注意事项:
1.接口可以继承。 2.类要继承接口的所有东西 3.接口不能继承类 4.一个类可以继承多个接口 5.接口的修饰符可以是 new、public、protected、internal、private 6.接口成员前面不允许有修饰符,都默认为公有成员(public) 7.接口成员可以分为4类:方法、属性、事件、索引器,而不能包含成员变量
4.实例
public class Program { static void Main(string[] args) { Dog dog = new Dog(); dog.Cay(); Cat cat = new Cat(); cat.Cay(); Pig pig = new Pig(); pig.Cay(); Console.Read(); } } class Dog : Animal //定义狗的类 { public void Cay() //输出狗叫声的方法 { Console.WriteLine("汪汪汪"); } } class Cat : Animal //定义猫的类 { public void Cay() //输出猫叫声的方法 { Console.WriteLine("喵喵喵"); } } class Pig : Animal //定义猪的类 { public void Cay() //输出猪叫声的方法 { Console.WriteLine("哼哼哼"); } } interface Animal //动物接口 { void Cay(); //叫声的方式 }
输出的结果:
这样一看,如果想要调用Cay()方法,在Dog,Cat,Pig中直接定义不就好了,何必多次一举?
那么我们修改一下代码,再定义一个类Class,这个Class作为实现接口传入,这个类不需要继承于接口Animal:
public class Program { static void Main(string[] args) { Class c = new Class(); Animal animal; animal = new Dog(); c.WriteCay(animal); animal = new Cat(); c.WriteCay(animal); animal = new Pig(); c.WriteCay(animal); Console.Read(); } } class Dog : Animal //定义狗的类 { public void Cay() //输出狗叫声的方法 { Console.WriteLine("汪汪汪"); } } class Cat : Animal //定义猫的类 { public void Cay() //输出猫叫声的方法 { Console.WriteLine("喵喵喵"); } } class Pig : Animal //定义猪的类 { public void Cay() //输出猪叫声的方法 { Console.WriteLine("哼哼哼"); } } class Class { public void WriteCay(Animal animal) { animal.Cay(); Console.WriteLine("--------------------------"); } } interface Animal //动物接口 { void Cay(); //叫声的方式 }
此时的函数的结果是:
如果再来一个Monkey,Cattle,Sheep这样的类添加进来,也只需要把他们的相关类加进来,然后在Main()中稍作修改就好,扩充性特别好。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构