黑马程序员技术交流社区
标题:
虚方法和抽象方法
[打印本页]
作者:
李宗鹏
时间:
2012-4-20 16:01
标题:
虚方法和抽象方法
虚方法和抽象方法理解啊?怎么区分啊?弄混了!
作者:
过客
时间:
2012-4-20 16:18
抽象方法的关键字用abstract,抽象方法没有方法体,派生类里必须重写基类的抽象方法。
虚方法的关键字用virtual,虚方法必须有方法体,派生类里可以不重写基类的虚方法,当然也可以重写,但要在方法名前面加上override。
作者:
丁官林
时间:
2012-4-20 18:00
抽象方法:
使用abstract关键字
抽象方法是必须被派生类覆写的方法。
抽象方法是可以看成是没有实现体的虚方法
如果类中包含抽象方法,那么类就必须定义为抽象类,不论是否还包含其它一般方法
虚方法 :
使用virtual关键字
调用虚方法,运行时将确定调用对象是什么类的实例,并调用适当的覆写的方法。
虚方法可以有实现体
简单点说,抽象方法是需要子类去实现的.虚方法,是已经实现了,子类可以去覆盖,也可以不覆盖取决于需求.
举个例子你就明白了:
namespace ConsoleApplication1
{
//----------------定义一个抽象类--------------
public abstract class AUser
{
public abstract UserInfo getUser(); //抽象方法
public virtual void Save(UserInfo info) //虚方法
{
//实现保存的功能
}
}
//------------定义一个类User1,继承类AUser,实现抽象方法-----------
public class User1:AUser
{
public override UserInfo getUser()
{
//一定要实现的,抽象类只给了抽象方法
}
//虚方法可以不实现
}
//----------------------定义一个类User2,继承AUser,实现抽象方法,覆盖须方法------------------------
public class User2:AUser
{
public override UserInfo getUser()
{
//一定要实现的,抽象类只给了抽象方法
}
public override void Save(UserInfo info)
{
//覆盖抽象类中的Save方法
}
}
}
作者:
忘忧草
时间:
2012-4-20 22:03
抽象方法
使用abstract关键字 public abstract bool Withdraw(…);
抽象方法是必须被派生类覆写的方法。
抽象方法是可以看成是没有实现体的虚方法
如果类中包含抽象方法,那么类就必须定义为抽象类,不论是否还包含其它一般方法
虚方法
使用virtual关键字 public virtual bool Withdraw(…);
调用虚方法,运行时将确定调用对象是什么类的实例,并调用适当的覆写的方法。
虚方法可以有实现体
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2