C# 接口interface的实现(多接口、同名冲突、继承+接口)

 更新时间:2026年06月26日 10:32:16   作者:影寂ldy  
本文主要介绍了C# 接口interface的实现(多接口、同名冲突、继承+接口),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

一、接口 核心概念

接口(interface):是一套行为规范/标准,只定义成员声明,不写实现。

类/结构体实现接口,必须实现接口中所有成员

接口核心特点(必考)

  • 接口 不能实例化
  • 接口中所有成员 默认是公共、未实现
  • 接口 支持多实现(多继承)(解决类单继承问题)
  • 接口只包含:属性、方法、事件、索引器(不能有字段
  • 接口命名规范:以 I 大写开头(IBook、IPaper、IPeople)

二、基础语法与定义

1. 接口定义

//书的接口:规范书本必须拥有的属性和方法
interface IBook
{
    int Id { get; set; }
    int Name { get; set; }
    void F1();
}

//纸张的接口:规范纸张必须拥有的属性和方法
interface IPaper
{
    string color { get; set; }
    void F2();
}

2. 关键字区分(超级重点)

  • 类 : 类 → 叫 继承(单继承)
  • 类 : 接口 → 叫 实现(多实现)

三、多接口实现(一个类实现多个接口)

C# 类只能单继承,但可以实现无数个接口,解决多继承问题。

完整实现代码

// Book类 同时实现 IBook、IPaper 两个接口
class Book : IBook, IPaper
{
    // 实现IBook接口属性
    public int Id { get; set; }
    public int Name { get; set; }

    // 实现IPaper接口属性
    public string color { get; set; }

    // 实现IBook方法
    public void F1()
    {

    }

    // 实现IPaper方法
    public void F2()
    {

    }

    // 类自己的扩展属性(接口没有)
    public string StudentId { get; set; }
}

规则

实现多个接口时,必须重写/实现所有接口的所有属性和方法,缺一不可。

四、接口同名成员冲突问题(重点难点)

1. 场景介绍

父类 Book 中已经存在 StudentId 属性

新接口 IPeople 中也定义了同名 StudentId 属性

interface IPeople
{
    string StudentId { get; set; }
}

2. 子类继承父类 + 实现接口

SmallBook 继承 Book、同时实现 IPeople

class SmallBook : Book, IPeople
{
    // 父类Book已经有StudentId
    // 满足接口IPeople的成员要求,所以【不用重复实现】

    // 如果想要重新实现接口、覆盖父类属性,需要加 new
    public new string StudentId { get; set; }
}

核心规则(必背)

  • 如果父类已经拥有和接口同名同返回值的成员
  • 子类继承父类后,默认自动满足接口要求,不需要重写
  • 如果想要重新实现、覆盖父类成员,使用 new 隐藏

五、接口 VS 抽象类(高频面试)

  • 接口:全是抽象规则(无实现),支持多实现
  • 抽象类:可以有普通成员、抽象成员,只能单继承

六、完整可运行测试代码(我帮你补全 Main 调用)

internal class Program
{
    static void Main(string[] args)
    {
        // 1. 实例化实现多接口的类
        Book b = new Book();
        b.Id = 1;
        b.Name = 1001;
        b.color = "白色";
        b.StudentId = "S1001";
        b.F1();
        b.F2();

        // 2. 子类继承父类 + 实现新接口
        SmallBook sb = new SmallBook();
        sb.StudentId = "S2002"; // new 新属性

        Console.WriteLine("Book颜色:" + b.color);
        Console.WriteLine("子类StudentId:" + sb.StudentId);
    }
}

七、满分必考总结

  • 接口 不能 new、不能实例化
  • 接口 全部成员默认公共、无实现
  • 类实现接口 必须实现全部成员
  • 类支持 多接口实现,只能单类继承
  • 父类已有同名成员,子类实现接口可免实现
  • 想要覆盖父类成员,使用 new 关键字隐藏

八、背诵口诀

接口定规范,无体不能实例化;单类继承多接口,父有同名不用写;想要覆盖加 new,多态扩展最灵活

到此这篇关于C# 接口interface的实现(多接口、同名冲突、继承+接口)的文章就介绍到这了,更多相关C# 接口interface内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 同步调用和异步调用WebService

    同步调用和异步调用WebService

    本文给大家介绍webservice同步调用和异步调用,同步调用就是一个同步操作会阻塞整个当前的进程,直到这个操作完成才能执行下一段代码,异步调用不会阻塞启动操作的调用线程,调用程序必须通过轮流检测,或者等待完成信号来发现调用的完成。小伙伴们跟着小编一起学习
    2015-09-09
  • 学会使用C#异常

    学会使用C#异常

    在C#中,程序中在运行时出现的错误,会不断在程序中进行传播,这种机制称为“异常”。 异常通常由错误的代码引发,并由能够更正错误的代码进行catch。本文将对C#异常简要分析说明,下面就跟着小编一起来看下吧
    2016-12-12
  • C#简单发送email的方法

    C#简单发送email的方法

    这篇文章主要介绍了C#简单发送email的方法,涉及C#发送Email的相关技巧,非常具有实用价值,需要的朋友可以参考下
    2015-04-04
  • C#调用执行命令行窗口(CMD)的方法与技巧

    C#调用执行命令行窗口(CMD)的方法与技巧

    在 C# 的编程世界里,我们常常会遇到需要与操作系统底层进行交互的场景,这时,调用命令行窗口(CMD)就成为了一个强大的工具,通过 C# 调用 CMD 都能为我们提供极大的便利,极大地拓展了 C# 应用程序的功能边界,本文介绍了C#中调用执行CMD的方法与技巧
    2025-01-01
  • C#使用Post调用接口并传递json参数

    C#使用Post调用接口并传递json参数

    这篇文章主要介绍了C#使用Post调用接口并传递json参数,具有很好的参考价值,希望对大家有所帮助。
    2022-06-06
  • 基于c# 接口的实例详解

    基于c# 接口的实例详解

    本篇文章是对c#中的接口进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • c#唯一值渲染实例代码

    c#唯一值渲染实例代码

    这篇文章主要介绍了c#唯一值渲染实例代码,有需要的朋友可以参考一下
    2013-12-12
  • C#实现闹钟AlarmClock实例代码

    C#实现闹钟AlarmClock实例代码

    这篇文章主要介绍了C#实现闹钟AlarmClock实例代码,很实用的功能,需要的朋友可以参考下
    2014-08-08
  • C#小知识之有趣的类型静态构造器

    C#小知识之有趣的类型静态构造器

    这篇文章主要介绍了C#小知识之有趣的类型静态构造器,本文直接给分实例代码,然后分析了C#中的这一个有趣的现象,需要的朋友可以参考下
    2015-04-04
  • 详解C#中Helper类的使用

    详解C#中Helper类的使用

    项目中用户频繁访问数据库会导致程序的卡顿,甚至堵塞。使用缓存可以有效的降低用户访问数据库的频次,有效的减少并发的压力。而helper类对缓存有了封装,本文展示了封装的示例代码,需要的可以参考一下
    2022-04-04

最新评论