C# 重写和重载

重写override):

为了满足某种需求,在子类中重写父类的虚方法抽象方法。重写的方法必须与父类中被重写的方法签名(方法名,返回值,参数列表)相同,且返回值前面必须有关键字override。

结合实例说明

假设有一个父类Parent,它包含一个算法(Algorithm)的虚方法,通过在子类Child中重写Algorithm方法满足我们求差的需求。

虚方法(virtual):

使用关键字virtual来声明虚方法,是一个可以被子类重写的方法。虚方法在父类中可以有默认实现,也可以没有实现,子类可以选择重写或继承父类的实现。

抽象方法(Abstract ):

使用的abstract关键字在抽象类中定义抽象方法,它没有方法体不能私有,必须在抽象类的非抽象子类中被重写,若不重写抽象方法将毫无意义。

重载 (overload):

重载是指在一个类内部定义多个具有相同方法名不同参数列表(参数的类型,参数的个数,参数的顺序)的方法。

结合实例说明

假设有一个 Program 类,它包含一个用于加法运算的方法 Add。我们可以通过重载 Add 方法来处理不同类型的输入。

重写和重载的区别:

相同点:

1.都是多态的表现形式

2.都允许在子类中重新定义已经存在的方法

不同点:

1.重写在子类;重载在同一个类

2.重写方法名,参数列表,返回值都必须相同;

   重载方法名必须相同,参数列表必须不同,返回值可同可不同

3.重写子类的访问级别不能低于父类相对应方法的访问级别

4.重写是运行时多态,指在运行时根据对象的实际类型来决定调用哪个方法;

   重载是编译时多态,指在编译时根据方法签名的不同来选择正确方法实现 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值