覆写和重载 虚方法与抽象方法 (转)

覆写和重载 虚方法与抽象方法

 
Items Override 覆写Overload 重载
位置存在于继承关系的类中存在于同一类中
方法名相同相同
参数列表相同必须不同
返回值相同可以不相同
程序中的处理程序运行时 程序编译时

抽象方法
使用 abstract关键字 public abstract bool Withdraw(…);
抽象方法是必须被派生类覆写的方法。
抽象方法是可以看成是没有实现体的虚方法
如果类中包含抽象方法,那么类就必须定义为抽象类,不论是否还包含其它一般方法

虚方法
使用 virtual关键字 public virtual bool Withdraw(…);
调用虚方法,运行时将确定调用对象是什么类的实例,并调用适当的覆写的方法。
虚方法可以有实现体


---------------------------------------------------------------------------------------------
虚拟方法和抽象方法有什么区别?

抽象方法只有声明没有实现,需要在子类中实现;虚拟方法有声明和实现,并且可以在子类中覆盖,也可以不覆盖使用父类的默认实现

虚拟方法有实现代码

抽象方法则没有,

并且抽象类不能被实例化,只能实例化实现了全部抽象方法的派生类

抽象方法是虚拟方法的一种
抽象方法没有实现,它的存在只是为派生类统一接口;派生类应该实现这个方法
如果编写一个基类,它永远不会被实现,那么就应该将这个类中的一个或多个方法定义为
抽象方法。

抽象方法只有声明没有实现,需要在子类中实现;虚拟方法有声明和实现,并且可以在子类中覆盖,也可以不覆盖使用父类的默认实现

补充一点

只允许在抽象类中使用抽象方法声明

学习

其实大家首先要搞清楚,虚方法与多态性关系密切,虚方法允许派生类完全或部分重写该类的方法,需写方法体。抽象类中可以包含抽象方法与一般的方法,抽象类不可以new,抽象方法只是一个定义,没有方法体,也就是没有{},也不要在里面写内容。它们两个相像的一点是都用override重写。

转载于:https://www.cnblogs.com/andyhooo/archive/2007/12/24/1012828.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值