C#怎么实现接口 C# interface定义与实现方法

大萱姑娘_6958

大萱姑娘_6958

2026-01-03

356人浏览

原创

接口是C#中定义契约的机制,只声明成员签名而不提供实现,支持多继承,用于实现松耦合与面向接口编程;类通过冒号实现接口,需提供所有成员的具体实现;可显式实现以解决冲突或隐藏细节;接口可继承组合,构建分层能力契约。

c#怎么实现接口 c# interface定义与实现方法

在C#中,接口(interface)用于定义契约——它不包含实现,只声明方法、属性、事件或索引器的签名,具体实现由类或结构体完成。 接口支持多继承,是实现松耦合、依赖倒置和面向接口编程的关键机制。

定义接口:用 interface 关键字

接口用 interface 关键字声明,名称通常以大写字母 I 开头(如 IRepository)。接口内只能包含公有成员声明,不能有字段、构造函数、析构函数或静态成员(C# 8.0+ 允许默认实现和静态抽象成员,但基础用法仍以纯契约为主)。

示例:

public interface IAnimal
{
    string Name { get; set; }
    void MakeSound();
    int Legs { get; }
}

实现接口:用冒号 + 接口名

类或结构体通过 : 后跟接口名来实现接口。所有接口成员必须在实现类型中提供 public 的具体实现(除非是显式接口实现)。

  • 实现属性需同时满足接口中 get/set 修饰符要求(如接口只写 get;,实现中可只提供 get 访问器)
  • 方法必须与接口签名完全一致(返回类型、名称、参数个数与类型)
  • 若一个类实现多个接口,用逗号分隔:class Dog : IAnimal, IMovable

示例:

public class Dog : IAnimal
{
    public string Name { get; set; }
    public int Legs => 4;
<pre class="brush:php;toolbar:false;">public void MakeSound()
{
    Console.WriteLine("Woof!");
}

}

显式接口实现:解决命名冲突或隐藏细节

当多个接口有同名成员,或想让接口成员仅通过接口类型访问(避免污染类的公共API),可用显式实现:不加访问修饰符,写成 接口名.成员名。

C#
C#

"避开 C# 常见错误——空陷阱、异步陷阱、LINQ 陷阱及资源泄漏。"

下载
  • 显式实现的成员只能通过接口变量调用
  • 不能加 public 或其他修饰符
  • 常用于实现 IEnumerable 或自定义集合接口时隐藏非核心方法

示例:

public class Container : IEnumerable, IDisposable
{
    // 显式实现 IDisposable.Dispose
    void IDisposable.Dispose() => Console.WriteLine("Disposed");
<pre class="brush:php;toolbar:false;">// 显式实现 IEnumerable.GetEnumerator
IEnumerator IEnumerable.GetEnumerator() => ...;

}

接口继承与组合:构建分层契约

接口可以继承其他接口,用 : 语法,支持多重继承。子接口会自动包含父接口所有成员。

  • 适合按能力拆分:如 IReadable、IWritable 可被 IReadWrite 继承
  • 实现类只需写最顶层接口,无需重复列出所有父接口
  • C# 8.0+ 支持默认接口方法(带实现),但慎用,避免破坏“接口=契约”的语义

示例:

public interface IWalkable
{
    void Walk();
}
<p>public interface IRunnable : IWalkable  // 继承 IWalkable
{
void Run();
}</p><p>public class Human : IRunnable  // 自动也实现了 IWalkable
{
public void Walk() => Console.WriteLine("Walking");
public void Run() => Console.WriteLine("Running");
}</p>

基本上就这些。接口不是模板也不是基类,它是“能做什么”的约定。写得好,代码就容易测试、替换和扩展。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

c#

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
golang结构体相关大全
golang结构体相关大全

本专题整合了golang结构体相关大全,想了解更多内容,请阅读专题下面的文章。

2025.06.09

5494

18

golang结构体方法
golang结构体方法

本专题整合了golang结构体相关内容,请阅读专题下面的文章了解更多。

2025.07.04

5671

25

java多继承如何实现
java多继承如何实现

本专题整合了java多继承相关内容以及教程,阅读专题下面的文章了解更多详细内容。

2025.10.28

458

22

硬盘接口类型介绍
硬盘接口类型介绍

硬盘接口类型有IDE、SATA、SCSI、Fibre Channel、USB、eSATA、mSATA、PCIe等等。详细介绍:1、IDE接口是一种并行接口,主要用于连接硬盘和光驱等设备,它主要有两种类型:ATA和ATAPI,IDE接口已经逐渐被SATA接口;2、SATA接口是一种串行接口,相较于IDE接口,它具有更高的传输速度、更低的功耗和更小的体积;3、SCSI接口等等。

2023.10.19

3248

3

PHP接口编写教程
PHP接口编写教程

本专题整合了PHP接口编写教程,阅读专题下面的文章了解更多详细内容。

2025.10.17

5509

12

php8.4实现接口限流的教程
php8.4实现接口限流的教程

PHP8.4本身不内置限流功能,需借助Redis(令牌桶)或Swoole(漏桶)实现;文件锁因I/O瓶颈、无跨机共享、秒级精度等缺陷不适用高并发场景。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2025.12.29

3909

9

java接口相关教程
java接口相关教程

本专题整合了java接口相关内容,阅读专题下面的文章了解更多详细内容。

2026.01.19

506

15

class在c语言中的意思
class在c语言中的意思

在C语言中,"class" 是一个关键字,用于定义一个类。想了解更多class的相关内容,可以阅读本专题下面的文章。

2024.01.03

4656

7

python中class的含义
python中class的含义

本专题整合了python中class的相关内容,阅读专题下面的文章了解更多详细内容。

2025.12.06

326

9

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程