A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李宗鹏 中级黑马   /  2012-4-20 16:01  /  1530 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

虚方法和抽象方法理解啊?怎么区分啊?弄混了!

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

3 个回复

倒序浏览
抽象方法的关键字用abstract,抽象方法没有方法体,派生类里必须重写基类的抽象方法。
虚方法的关键字用virtual,虚方法必须有方法体,派生类里可以不重写基类的虚方法,当然也可以重写,但要在方法名前面加上override。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
抽象方法:  
使用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方法   
           }   
   }   
}

评分

参与人数 1技术分 +3 收起 理由
郑文 + 3

查看全部评分

回复 使用道具 举报
抽象方法   
   使用abstract关键字    public    abstract    bool    Withdraw(…);   
   抽象方法是必须被派生类覆写的方法。   
   抽象方法是可以看成是没有实现体的虚方法   
   如果类中包含抽象方法,那么类就必须定义为抽象类,不论是否还包含其它一般方法   
   
   虚方法   
   使用virtual关键字    public    virtual    bool    Withdraw(…);   
   调用虚方法,运行时将确定调用对象是什么类的实例,并调用适当的覆写的方法。   
   虚方法可以有实现体

评分

参与人数 1技术分 +2 收起 理由
郑文 + 2

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马