news 2026/6/5 14:22:43

C# 多态与函数重载(静态多态)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C# 多态与函数重载(静态多态)

一、多态 核心概念

多态:同一个功能,拥有不同的实现形态

C# 多态分为两大类:

1. 静态多态(编译时多态)

程序编译阶段就确定调用哪个方法

包含:函数重载、运算符重载

2. 动态多态(运行时多态)

程序运行阶段动态确定调用哪个方法

依靠:继承 + 虚方法重写 / 接口 / 抽象类实现

静态多态:在编译过程中,通过方法重载和运算符重载来实现,也称之为静态绑定和早期绑定

动态多态:在运行过程中,通过方法重写,隐藏方法来实现,也称之为动态绑定或者后期绑定


二、函数重载(静态多态核心)

1. 函数重载满足的三个硬性条件(必考)

  1. 方法名必须完全一致

  2. 参数列表必须不同:参数个数不同 / 参数类型不同 / 参数顺序不同

  3. 仅返回值不同,不构成重载(超级高频坑点)

2. 核心原理

编译器根据方法名 + 参数列表区分不同方法,实现“同名不同功能”的多态效果。


三、代码逐行解析(合法重载案例)

// 1. 无参方法 public static void F1() { Console.WriteLine("F1不带参数"); } // 2. 参数个数不同 = 构成重载 public static void F1(int a) { Console.WriteLine("F1带一个参数"); } // 3. 参数类型不同 = 构成重载 public static void F1(string a) { Console.WriteLine("F1带一个参数"); } // 4. 参数个数不同 = 构成重载 public static void F1(string a, int b) { Console.WriteLine("F1带俩个参数"); } // 5. 参数顺序不同 = 构成重载 public static void F1(int b, string a) { Console.WriteLine("F1带俩个参数"); } // 6. 参数类型不同,返回值不同 = 依然构成重载(看参数不看返回值) public static int F1(bool b) { Console.WriteLine("F1带1个参数"); return 10; }

所有以上方法全部是合法重载

区分依据:参数个数、类型、顺序存在差异,满足重载条件。


四、超级易错考点(笔试必考坑)

❌ 非法重载:仅返回值不同

以下代码报错,不构成重载

public static void F1(int a) { } // 错误!仅仅返回值不一样,参数列表完全一致,不是重载 public static int F1(int a) { return 10; }

重点结论:返回值、修饰符、参数名 都不参与重载判定!

✅ 合法重载:参数顺序不同

F1(int,string)F1(string,int)是两个不同的参数列表,属于合法重载。


五、重载判定终极规则

两个方法是否是重载,只看参数列表

  • 参数个数不同 → 重载

  • 参数类型不同 → 重载

  • 参数顺序不同 → 重载

  • 仅返回值不同 →不是重载

  • 仅参数名不同 →不是重载


六、静态多态特点

  • 编译时就绑定方法,执行效率高

  • 方法名相同,参数列表不同,实现多种形态

  • 不需要继承、不需要重写,同类中即可实现


七、满分背诵口诀

  • 多态分两种,静态靠重载,动态靠重写

  • 重载三条件:同名、参不同、不看返回值

  • 参个数、类型、顺序,任一不同即重载

  • 只改返回不算数,编译报错记清楚

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/5 14:22:34

数据结构:4.2 LinkedList(内置)和MyLinkedList(手写实现)

【目标】1.手写MyLinkedList,体会LinkedList的底层逻辑2.掌握LinkedList中的一些方法等3.章节测试【引言】关于数据结构,我们按照逻辑关系进行划分,可以分为以下部分:所谓数据结构,就是对数据的整合与存储,…

作者头像 李华
网站建设 2026/6/5 14:20:11

三车道城市道路MATLAB仿真工具:换道、减速、前移全流程可调

本文还有配套的精品资源,点击获取 简介:这个MATLAB工具包用元胞自动机模拟三车道城市道路交通流,基于Nagel-Schreckenberg模型做了实用化扩展。它把交通行为拆成独立模块:create_plaza.m生成初始车流,switch_lane.m…

作者头像 李华
网站建设 2026/6/5 14:20:11

考研数学二多元函数微分学保姆级复习指南:从偏导到梯度,手把手搞定同济高数下册第九章

考研数学二多元函数微分学30天突破计划:高频考点拆解与真题战术手册距离考研还有两个月,数学二的多元函数微分学部分是否让你感到无从下手?作为每年必考且分值占比超过15%的核心模块,这一章节的掌握程度直接决定了你的总分档次。不…

作者头像 李华
网站建设 2026/6/5 14:20:09

手写遗传算法Python实现:从零编码理解选择、交叉与变异

1. 这不是“AI模拟进化”,而是你亲手搭起的数字生命孵化器“遗传算法”这四个字,听上去像教科书里被供起来的概念——生物课讲DNA双螺旋,计算机课讲它“模仿自然选择”。但我在带新人做智能优化项目时发现,90%的人卡在第一步&…

作者头像 李华
网站建设 2026/6/5 14:18:27

手机产业变革:从技术驱动到生态整合,跨界者如何重塑行业格局

1. 从“门外汉”到手机玩家:一个产业的底层逻辑变迁手机,这个曾经集尖端通信、精密制造和复杂软件于一体的“高科技黑箱”,如今在中国市场,似乎成了一场“全民狂欢”。英语老师罗永浩、相声演员王自健,这些与通信技术、…

作者头像 李华
网站建设 2026/6/5 14:18:22

NanaZip:重新定义Windows文件压缩体验的现代解决方案

NanaZip:重新定义Windows文件压缩体验的现代解决方案 【免费下载链接】NanaZip The 7-Zip derivative intended for the modern Windows experience 项目地址: https://gitcode.com/gh_mirrors/na/NanaZip 还在为Windows文件压缩工具的笨重界面和有限功能而烦…

作者头像 李华