什么是 C# 中的接口(附示例)

C#中的接口是什么?
An 接口 在 C# 中,它与类一起使用来定义一个连接。trac接口是一份关于类将向应用程序提供哪些功能的协议。接口定义了类可以执行哪些操作。接口声明了属性和方法。至于方法具体做什么,则由类自己定义。
让我们通过更改控制台应用程序中的类来查看接口的示例。请注意,我们不会运行代码,因为没有任何东西可以使用接口运行。
C# 接口示例
让我们创建一个接口类。该类将被命名为“Guru99Interface。”我们的主类将继承这个定义的接口。所有代码都需要写在 Program.cs 文件中。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DemoApplication { interface IGuru99Interface { void SetTutorial(int pID, string pName); String GetTutorial(); } class Guru99Tutorial : IGuru99Interface { protected int TutorialID; protected string TutorialName; public void SetTutorial(int pID, string pName) { TutorialID = pID; TutorialName = pName; } public String GetTutorial() { return TutorialName; } static void Main(string[] args) { Guru99Tutorial pTutor = new Guru99Tutorial(); pTutor.SetTutorial(1,".Net by Guru99"); Console.WriteLine(pTutor.GetTutorial()); Console.ReadKey(); } } }
Code 解释:-
在这里,我们解释代码的重要部分
- 我们首先定义一个名为“Guru99接口。”请注意,关键字“接口”用于定义接口。
- 接下来,我们定义接口将使用的方法。在本例中,我们定义的方法与前面所有示例中使用的方法相同。请注意,接口只声明方法。它不定义其中的代码。
- 然后我们做出我们的 Guru99Tutorial 类继承了该接口。在这里,我们编写代码来定义接口中声明的各种方法。这种编码方式实现了以下目标:
- 它确保了该类, Guru99Tutorial 只添加了“SetTutorial”和“GetTutorial”方法所需的代码,除此之外没有其他内容。
- 它还确保界面表现得像一个控制台一样。trac吨。 这 程 必须遵守该规定tract。所以如果 contrac它说应该有两个方法,分别叫做“SetTutorial”和“GetTutorial”,那就应该这样。
C# 接口与绝对值tract 类
初学者常问的一个问题是,C# 接口与……有何不同? ABStracT级两者都定义了一个contrac其他类型也遵循这些类型,但它们服务于不同的设计目标。
主要区别如下:
- 实施: 接口仅包含声明,而绝对值则包含定义。tract 类可以提供两种 abstract 个成员和完全实现的方法。
- 多重继承: 一个类可以实现多个接口,但只能继承一个绝对值。tract 类。
- 省(自治区,直辖市,州): 腹肌trac类可以包含字段、构造函数和带有数据的属性,而接口不能存储实例状态。
- 访问修饰符: ABStract 类成员可以是公共的、受保护的或私有的,而经典接口成员则隐式为公共的。
- 用例: 使用接口为不相关的类型添加功能,以及一个绝对值tract 类用于在密切相关的类型之间共享通用代码。
简而言之,接口描述了类可以做什么,而绝对值则描述了类可以做什么。tract 类还可以定义部分实现方式。
如何在 C# 中实现多个接口
与类继承不同,C# 允许单个类实现多个接口。这使得该语言能够提供一种安全的多重继承形式,避免同时继承多个基类所带来的歧义。
要实现多个接口,请在类名后列出它们,并用逗号分隔。然后,该类必须定义它所实现的每个接口中声明的所有方法。
步骤1) 声明两个接口,每个接口都有自己的方法。
步骤2) 创建一个类,实现这两个接口,接口名称之间用逗号分隔。
步骤3) 为每个接口中声明的每个成员提供一个方法体。
下面的示例展示了一个实现了 I 接口的 Document 类。Readable 以及一个 IWritable 接口。
using System; namespace DemoApplication { interface IReadable { void Read(); } interface IWritable { void Write(); } class Document : IReadable, IWritable { public void Read() { Console.WriteLine("Reading the document"); } public void Write() { Console.WriteLine("Writing to the document"); } static void Main(string[] args) { Document doc = new Document(); doc.Read(); doc.Write(); Console.ReadKey(); } } }
Code 解释:-
- 我们声明了两个接口,IReadable 以及 IWritable 接口。每个接口都声明一个没有方法体的方法。
- Document 类在冒号后列出了两个接口,并用逗号分隔,因此它同意同时遵循这两个接口。tracTS。
- 然后,该类定义了读取和写入方法。跳过ping 两种方法都会导致编译时错误。
- Main 方法创建了一个 Document 对象并调用了这两个方法,证明该类满足这两个接口。
程序运行时,它会打印以下内容: 阅读文件 第一行和 写入文档 在第二行。这种模式保持每个连接trac它小巧而专注,这使得 Document 类更容易测试和扩展。
在 C# 中使用接口的优势
接口在专业的 C# 项目中被广泛使用,因为它们使代码更灵活、更易于维护。它们允许你面向特定需求进行编程。trac而不是具体类别。
主要优点包括:
- 松耦合: Code 这取决于接口,而不是特定的类,因此实现方式的改变不会影响调用者。
- 多重继承: 一个类可以从多个接口继承行为,而普通的类继承则不允许这样做。
- 可测试性: 接口使得在单元测试期间用模拟对象替换真实类变得简单。
- 依赖注入: 框架在运行时注入接口实现,这是 SOLID 原则的核心思想。
- 坚持是关键 每个实现类都必须提供相同的成员集,从而保持 API 的可预测性。
由于这些优势,接口成为大多数现代 C# 设计模式和应用程序框架的核心。

