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

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

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

情况1:同名、同类型

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

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

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

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

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

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

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

相关推荐
学长毕设4 小时前
基于SpringBoot的实验室资产管理系统
java·spring boot·后端
sbjdhjd4 小时前
网工进阶笔记:H3CSE 园区网全栈技术与协议汇总
网络·笔记·云计算·ssh·网络工程·vlan·aaa
zzu123zsw5 小时前
从臃肿的模板调用到声明式契约:深入 UniHttp 动态代理与多渠道生命周期扩展
java·spring boot·microsoft·unihttp
源码集结号6 小时前
云诊所门诊系统源码,基于SpringBoot+Vue.js架构,支持多租户设计与Docker容器化部署
java·spring boot·源码·医院信息系统·门诊系统·诊所系统
论文复现现场6 小时前
WRF、FEA 能用 L40S 加速吗?求解器检查、断点恢复与长期运行
java·数据库·算法·wrf·有限元分析·gpu计算·断点续算
啃瓜子的松鼠6 小时前
泛微OAe9-后端二开异步调用
java
海绵宝宝的月光宝盒7 小时前
14-AutoCAD-阵列命令应用与案例实战(AR)
经验分享·笔记·自动化·课程设计·制造·学习方法·cad
秋天的怀念_David7 小时前
第二十一夜 · 数字黑洞与西西弗斯的惩罚
java·程序人生·算法
外收内放7 小时前
Python基础语法练习题(73)
java·前端·python
Wang's Blog7 小时前
Java 项目实战: 交友项目 - 环信后台发送消息测试
java·交友