C# 多态与函数重载(静态多态)
一、多态 核心概念多态同一个功能拥有不同的实现形态C# 多态分为两大类1. 静态多态编译时多态程序编译阶段就确定调用哪个方法包含函数重载、运算符重载2. 动态多态运行时多态程序运行阶段动态确定调用哪个方法依靠继承 虚方法重写 / 接口 / 抽象类实现静态多态:在编译过程中,通过方法重载和运算符重载来实现,也称之为静态绑定和早期绑定动态多态:在运行过程中,通过方法重写,隐藏方法来实现,也称之为动态绑定或者后期绑定二、函数重载静态多态核心1. 函数重载满足的三个硬性条件必考方法名必须完全一致参数列表必须不同参数个数不同 / 参数类型不同 / 参数顺序不同仅返回值不同不构成重载超级高频坑点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)是两个不同的参数列表属于合法重载。五、重载判定终极规则两个方法是否是重载只看参数列表参数个数不同 → 重载参数类型不同 → 重载参数顺序不同 → 重载仅返回值不同 →不是重载仅参数名不同 →不是重载六、静态多态特点编译时就绑定方法执行效率高方法名相同参数列表不同实现多种形态不需要继承、不需要重写同类中即可实现七、满分背诵口诀多态分两种静态靠重载动态靠重写重载三条件同名、参不同、不看返回值参个数、类型、顺序任一不同即重载只改返回不算数编译报错记清楚