C#多态-重载

📅 2026/8/9 4:06:09
C#多态-重载
1.多态-方法重载//面向对象编程四大特性抽象 封装 继承 多态//多态指同一个行为具有不同表现形式的能力//多态可以是静态或者动态的,静态指的实在编译过程中发生,动态指的是在运行过程中发生//静态多态//在编译过程中,通过方法重载和运算符重载来实现编译时的多态,也叫做静态绑定或早期绑定//我们对类进行相同的new行为,出现了不同的效果,这个就可以理解成多态//比如strs.IndexOf;//参数形式9种写法 但是方法的名字都是IndexOf,这就叫方法的重载string类的多态//方法重载 同类同名不同参//你可以在同一个范围内对相同的方法名有多个定义//方法定义必须彼此不同,可以是 参数个数不同, 参数的数据类型不同, 参数的顺序不同//不能重载的只有返回值类型不同的方法声明,修饰符不同更不算,参数名不同也不同也不算//其实之前学的无参构造和有参构造就是重载//构造函数的重载publicPeople(){Console.WriteLine(无参构造函数);}publicPeople(stringa)//参数个数不同{Console.WriteLine(参数是字符串的有参构造函数);}publicPeople(inta)//参数的数据类型不同{Console.WriteLine(参数是int的有参构造函数);}//定义一个Student类 实现Study方法的重载//public void Study()//public void Study(string name) //参数的个数不同//public void Study(string name,int score)//public void Study(int score,string name) //参数的顺序不同2.运算符的重载//我们可以重新去定义某个类中的运算符的含义完成自定义的运算对象进行相应的运算符操作//一个运算符的重载,其实就是一个方法而已,对对象执行相应的运算符操作时,会自动执行这个重载的运算符方法,运算符重载没有强制语义格式:public static 返回值类型 operatop 要重载的运算符(参数){}//static静态,不能写成实例方法,运算符不属于某一个实例,参数不能全部都是普通数值类型,至少有一个当前的类类型//重载运算符 计算两个盒子的体积之和publicstaticintoperator(Boxb1,Boxb2){returnb1.Volume b2.Volume;}//C#强制规定:成对重载 / /! 否则报错publicstaticbooloperator(Boxb1,Boxb2){returnb1.Length b2.Length;}publicstaticbooloperator(Boxb1,Boxb2){returnb1.Length b2.Length;}publicstaticbooloperator(Boxb1,Boxb2){returnb1.Length b2.Length;}publicstaticbooloperator!(Boxb1,Boxb2){returnb1.Length ! b2.Length;}//无法重载逻辑运算符当中的 ||//复合赋值运算符不能显示重载 在重载二元运算符时,也会隐式重载相应的复合赋值运算符,例如重载 运算符也会隐式重载