C#多接口实现、重名成员、显式实现、接口继承+抽象类和接口区别说明

 更新时间:2026年06月06日 10:00:15   作者:z落落  
这段SEO描述融合了“接口显式实现”、“接口冲突”、“接口继承”三个核心关键词,详细概括了文章关于Java接口相关知识点的讲解,包括显式实现规则、冲突接口处理方法、接口继承规则等内容,适合准备相关考试或项目开发的读者

一、核心知识点前置(必考)

1. 多接口冲突场景

当一个类同时实现多个接口,出现:同名但返回类型不同的属性/方法 → 必须使用 接口显式实现

2. 显式实现规则

  • 格式:接口名.成员名
  • 不能加 public 修饰符(默认私有)
  • 只能通过 对应接口变量 访问,不能通过类对象访问

3. 隐式实现

同名、同类型成员,只需要实现一次,所有接口共用。

二、冲突接口定义 IA、IB

interface IA 
{ 
    int A { get; set; }
    string B { get; set; }
    string C { get; set; }
    void F1();
}
interface IB
{
    string B { get; set; }
    int C { get; set; }
    void F1(int a);
}

冲突分析

1. B 属性:IA、IB 都是 string B → 同名同类型 → 无需冲突,隐式实现一次即可

2.C 属性

  • IA:string C
  • IB:int C

同名、类型不同 → 严重冲突,必须显式实现

3. F1 方法:方法签名不同(无参/有参),属于重载,不冲突

三、Test 类实现多接口(核心考点)

class Test:IA, IB
{
    // 隐式实现:共用同名同类型成员
    public int A { get; set; }
    public string B { get; set; }

    // 显式实现 IA 的 C(string类型)
    string IA.C { get; set; }

    // 显式实现 IB 的 C(int类型)
    int IB.C {  get; set; }

    // 无参F1 实现 IA
    public void F1()
    {

    }

    // 有参F1 实现 IB
    public void F1(int a)
    {

    }
}

逐行解析

1. public string B

两个接口 B 都是 string 类型,实现一次,两个接口共用

2. string IA.C {get;set;}

显式实现 IA 的 C 属性,无访问修饰符

3. int IB.C {get;set;}

显式实现 IB 的 C 属性,无访问修饰符

4. 两个 F1 方法参数不同,构成方法重载,分别对应两个接口

显式实现核心规则(背诵)

多个接口:名字相同、类型不同 = 必须显式实现

多个接口:名字相同、类型相同 = 实现一次共用

四、Main 方法调用解析

IA t1 =  new Test();
t1.C = "11";  // 调用 IA的 string C

IB i1 = new Test();
i1.C = 10;    // 调用 IB的 int C

原理

显式实现的成员 只能通过对应接口变量访问

  • 1. 接口 IA 变量 → 只能找到 IA.C(string)
  • 2. 接口 IB 变量 → 只能找到 IB.C(int)
  • 3. 不能用 Test 类对象直接点 C,会报错

五、接口的继承(接口拓展)

interface IC
{
    string B { get; set; }
}
interface IQ : IC
{
    int C { get; set; }
}

知识点

接口可以继承接口

IQ 继承 IC,意味着:

IQ 接口包含自己的所有成员 + 父接口 IC 的所有成员

六、类实现继承接口(必须实现全部层级成员)

class Test1 : IQ
{
    public int C { get ; set ; }
    public string B { get; set; }
}

规则(必考原话)

如果一个类实现了子接口,子接口继承了父接口,当前类必须实现【所有父接口+子接口】的全部成员

Test1 实现 IQ,IQ 继承 IC

所以必须实现:

IC 的 B 属性 + IQ 的 C 属性

七、接口 VS 抽象类(满分简答题标准答案)

相同点

  • 1. 都不能被实例化
  • 2. 都可以包含未实现的成员,由派生类实现

不同点(逐条背诵)

1. 成员结构不同

  • 抽象类:可以有普通成员(有方法体)、字段、抽象成员
  • 接口:全部成员都是抽象、无实现

2. 继承数量不同

  • 抽象类:类只能单继承
  • 接口:类可以多实现

3. 重写方式不同

  • 抽象类:子类必须用 override 重写

  • 接口:直接实现,不需要 override

4. 访问修饰符不同

  • 抽象类:可以使用任意访问修饰符

  • 接口:成员默认public,不能手动写修饰符

5. 成员类型不同

  • 抽象类:可以有 字段、属性、方法

  • 接口:不能有字段,只能有属性、方法

对比维度

抽象类 abstract

接口 interface

成员类型

可以有普通方法、字段、属性、抽象方法

只能有属性、方法,不能有字段、普通实现

继承数量

单继承,一个类只能继承一个抽象类

多实现,一个类可实现无数接口

重写方式

必须用 override 重写

直接实现,不需要 override

访问修饰符

支持所有访问修饰符

默认public,不能手动修改

主体功能

代码复用、模板类

规范、行为约束、多态

八、终极总结口诀

  • 多接口同名同类型,实现一次就够用
  • 多接口同名不同型,显式实现分清楚
  • 显式实现无修饰,只能接口变量读
  • 接口可多可继承,全部成员要实现
  • 抽象有体有字段,接口全抽

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • c#生成验证码程序

    c#生成验证码程序

    这篇文章主要介绍了使用c#生成验证码的示例,大家参考使用吧
    2014-01-01
  • C#圆角窗体简单实现方法

    C#圆角窗体简单实现方法

    这篇文章主要介绍了C#圆角窗体简单实现方法,涉及C#窗体设置的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-09-09
  • C#调用DeepSeek API的两种实现方案

    C#调用DeepSeek API的两种实现方案

    DeepSeek(深度求索) 最近可谓火爆的一塌糊涂,具体的介绍这里不再赘述,您可以各种搜索其信息,即使您不搜索,只要您拿起手机,各种关于 DeepSeek 的新闻、资讯也会扑面而来的推送到您面前,本文给大家介绍了C#调用DeepSeek API的两种实现方案,需要的朋友可以参考下
    2025-02-02
  • C#操作windows注册表的方法

    C#操作windows注册表的方法

    这篇文章主要介绍了C#操作windows注册表的方法,涉及C#针对注册表的读取与写入技巧,非常具有实用价值,需要的朋友可以参考下
    2015-04-04
  • C#将国产Linux视频录制生成mp4的具体实现

    C#将国产Linux视频录制生成mp4的具体实现

    这篇文章主要介绍了C#将国产Linux视频录制生成mp4的具体实现,文中通过代码示例介绍的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-08-08
  • c# wpf如何更好的使用Application程序集资源

    c# wpf如何更好的使用Application程序集资源

    这篇文章主要介绍了c# wpf如何更好的使用Application程序集资源,帮助大家更好的理解和学习使用c#,感兴趣的朋友可以了解下
    2021-04-04
  • C#基于时间轮调度实现延迟任务详解

    C#基于时间轮调度实现延迟任务详解

    在很多.net开发体系中开发者在面对调度作业需求的时候一般会选择三方开源成熟的作业调度框架来满足业务需求,但是有些时候可能我们只是需要一个简易的延迟任务。本文主要分享一个简易的基于时间轮调度的延迟任务实现,需要的可以参考一下
    2022-12-12
  • 如何解决hash冲突

    如何解决hash冲突

    上篇文章 为什么哈希存取比较快?使用它需要付出什么代价 只是简单介绍了使用hash所带来的利与弊。并未涉及hash的技术细节,本文则着重学习一下如何解决哈希编址的冲突问题。
    2016-06-06
  • C# WinForm捕获未处理的异常实例解析

    C# WinForm捕获未处理的异常实例解析

    这篇文章主要介绍了C# WinForm捕获未处理的异常,包括了常见的未捕获的异常、UI线程异常、非UI线程异常等,非常实用,需要的朋友可以参考下
    2014-09-09
  • C# SimpleJSON字典反序列化实战教程

    C# SimpleJSON字典反序列化实战教程

    C# 解析JSON道路千万条,其中最流行的还是由Newtonsoft出品的Json.NET,只需要将Json的结构做成C#的class,即可实现完美的序列化和反序列化,这篇文章主要介绍了C# SimpleJSON字典反序列化实战教程,需要的朋友可以参考下
    2024-03-03

最新评论