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

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

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

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

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

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

相关推荐
CV工程师丁Sir25 分钟前
ArkWeb 手记 04|DevTools 调试与缓存清理
java·spring·缓存·harmonyos
Sarvartha7 小时前
final 关键字
java·开发语言
2601_952047797 小时前
单一策略深度教程:用轻易云把集成任务的报错实时推送到钉钉机器人
java·机器人·钉钉
yi0117 小时前
LeetCode 219:存在重复元素 II——哈希表记录“最近一次出现的位置”
数据结构·人工智能·笔记·python·算法·leetcode·哈希表
数据狐(Datafox)8 小时前
淘宝图片搜索 API 落地实战:基于以图搜货搭建跨境电商选品系统
java·大数据·微服务
志尊宝8 小时前
Vue3 零基础每日笔记(073):keep-alive 页面缓存实战——列表页返回不丢状态
vue.js·笔记·缓存·#vue #前端 #前端开发·#javascript·#vue.js
Escalating_xu10 小时前
【C 语言】数据在内存中的存储:补码、大小端、整型陷阱与 IEEE 754 全解析
java·c语言·网络
灯澜忆梦10 小时前
【面向对象编程C++】| 基础语法
java·c++·算法