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,不能手动写修饰符
主体功能 代码复用 + 定义规范 纯规范、纯标准、解耦

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

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

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

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

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

相关推荐
Wang's Blog4 小时前
Java 接入Redis: 服务启动停止与后台运行配置
java·服务器·redis
此时不提桶,更待何时4 小时前
01-04-B-垃圾回收面试与生产事故实战
java·jvm·面试
林川~015 小时前
Unity 万能物理检测工具:射线检测 / 范围检测 / 层级过滤 / 编辑器可视化(可直接拿去用)
游戏·unity·c#·射线检测·通用工具
智者知已应修善业6 小时前
【4060BD_5V应用电路图】2022-12-24
驱动开发·经验分享·笔记·硬件架构·硬件工程
鹿角片ljp6 小时前
KV Cache 解析
java·算法
captain3766 小时前
网络原理(9)-数据链路层
java·网络协议·java-ee
惊讶的猫7 小时前
意图识别置信度和检索重排的分数
java
caoerzhong7 小时前
仓库管理数字化趋势解读:JeeWMS 开源 Java WMS 视角下的五个演进方向
java·开源
程序员JerrySUN8 小时前
Jetson Edge AI 实战01:Nano、Xavier、Orin 怎么选?Jetson 硬件选型详解【视频讲解】
java·数据库·redis·安全·mybatis