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

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

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

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

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


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

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

虚拟方法有实现代码

抽象方法则没有,

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

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

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

补充一点

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

学习

其实大家首先要搞清楚,虚方法与多态性关系密切,虚方法允许派生类完全或部分重写该类的方法,需写方法体。抽象类中可以包含抽象方法与一般的方法,抽象类不可以new,抽象方法只是一个定义,没有方法体,也就是没有{},也不要在里面写内容。它们两个相像的一点是都用override重写。
posted @ 2007-12-24 16:08  andyhooo  阅读(415)  评论(0编辑  收藏  举报