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

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

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

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

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

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

相关推荐
像我这样帅的人丶你还7 小时前
Java 后端详解(四):分页与搜索
java·javascript·后端
她的男孩7 小时前
数据权限为什么不能只靠注解?Forge 的 Mapper 层 SQL 改写源码拆解
java·后端·架构
tntxia8 小时前
Mybatis的日志输入
java
亦暖筑序10 小时前
Java 8老系统Browser Agent实战:三层拦截把AI操作后台变成可审计流程
java·后端·设计模式
用户2986985301413 小时前
Java 实现 Word 文档加密与权限解除
java·后端
Yeats_Liao13 小时前
14:Servlet中的页面跳转-Java Web
java·后端·架构
未秃头的程序猿13 小时前
告别"if-else地狱"!Java 21模式匹配,代码优雅了10倍
java·后端·面试
鹤望兰67514 小时前
字节跳动国际支付-后端开发-三面面经
java
Flittly14 小时前
【AgentScope Java新手村系列】(14)人机交互
java·spring boot·spring
RainCity14 小时前
Java Swing 自定义组件库分享(十二)
java·笔记·后端