C# 多接口、同名冲突、显式实现、接口继承 完整笔记

一、多接口同名成员 核心规则

1. 两种重名情况区分(必考)

情况1:同名、同类型

多个接口存在名称相同、数据类型也相同 的属性/方法 → 只需要实现一次(隐式实现即可)。

案例:IAIB 都有 string B {get;set;}

cs 复制代码
// 两个接口同名同类型,实现一次即可
public string B { get; set; }
情况2:同名、不同类型(冲突核心)

多个接口 名称相同、返回/数据类型不同必须使用【显式实现】,否则编译器无法区分,直接报错。

案例:

  • IA 中:string C {get;set;}

  • IB 中:int C {get;set;}

2. 显式实现 固定语法 & 硬性规则

cs 复制代码
// 显式实现格式:接口名.成员名
string IA.C { get; set; }
int IB.C { get; set; }

显式实现三大铁律

  • 不能加任何访问修饰符(默认私有)

  • 必须格式:接口名.成员

  • 只能通过 接口变量 访问,不能通过子类对象直接访问

3. 普通成员(方法)同名重载

IA 无参 F1、IB 有参 F1,属于方法重载,直接正常实现即可,无需显式实现。

cs 复制代码
public void F1(){}
public void F1(int a){}

二、代码调用逻辑解析

cs 复制代码
// 向上转型为IA接口类型 → 访问 IA的string C
IA t1 = new Test();
t1.C = "11";

// 向上转型为IB接口类型 → 访问 IB的int C
IB i1 = new Test();
i1.C = 10;

核心:显式实现的成员,由【变量的接口类型】决定调用哪一个


三、接口的继承(接口多继承)

1. 规则

接口可以继承接口(支持多继承);

当类实现子接口时,必须实现【所有父接口+子接口】的全部成员

2. 案例代码

cs 复制代码
// 父接口
interface IC
{
    string B { get; set; }
}
// 子接口继承父接口
interface IQ : IC
{
    int C { get; set; }
}

// 实现子接口,必须实现父子所有成员
class Test1 : IQ
{
    public int C { get; set; }    // 子接口IQ成员
    public string B { get; set; } // 父接口IC成员
}

总结口诀

实现子接口,必扛全家成员(父、子接口全部实现)


四、接口 VS 抽象类(最全对错对比)

相同点

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

不同点(考试必背)

对比维度 抽象类 abstract 接口 interface
成员类型 可包含普通方法、抽象方法、字段、属性 无字段,只有属性、方法、事件、索引器
实现/继承数量 只能单继承 可以多实现
重写方式 必须使用 override 重写 直接实现,不需要 override
访问修饰符 支持所有访问修饰符(public/private等) 全部默认public,不能手动写修饰符
主体功能 代码复用 + 定义规范 纯规范、纯标准、解耦

五、终极满分总结(多接口核心)

  • 同名同类型,实现一次就够用

  • 同名不同类型,必须显式来实现

  • 显式实现无修饰,仅靠接口变量访问

  • 接口可多继承,子类实现包揽全家

相关推荐
咩咩啃树皮8 小时前
第40篇:Vue3组件化开发精讲——组件拆分、复用、父子通信、工程化架构
java·前端·架构
鱟鲥鳚8 小时前
Spring Boot 集成 LangChain4j:从模型调用到 Tool Calling(Demo版)
java·spring boot
-银雾鸢尾-8 小时前
C#中的StringBuilder相关方法
开发语言·c#
-银雾鸢尾-9 小时前
C#中结构体与类的区别;抽象类与接口的区别
开发语言·c#
大模型码小白10 小时前
【Python零基础教程】继承、多态与魔法函数:面向对象编程三大核心特性详解
java·大数据·开发语言·人工智能·python·ai编程
腾渊信息科技公司10 小时前
Spring Boot对接MES实战:视觉检测数据自动同步方案
java·人工智能·spring boot·后端·计算机视觉·ai·软件需求
爱笑的源码基地11 小时前
高并发 Redis 缓存门诊HIS系统源码,含财务统计药房进销存
java·程序·门诊系统·诊所系统·云诊所源码
wuqingshun31415911 小时前
TCP超时重传机制是为了解决什么问题?
java
遇乐的果园12 小时前
前端学习笔记-vue加载渲染优化
前端·笔记·学习
心平气和量大福大13 小时前
C#-WPF-Window主窗体
开发语言·c#·wpf