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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Doublekill 中级黑马   /  2014-3-16 07:24  /  1238 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 Doublekill 于 2014-3-16 20:30 编辑

他们分别在什么时候用啊,有点迷糊

5 个回复

倒序浏览
父类(具体类)方法被子类重写时,父类中的被重写的方法定义为虚方法抽象类中不需实现的方法定义为抽象方法,没有方法体,由实现类去实现
举个例子:
  1. <div class="blockcode"><blockquote>class person
  2. {
  3. string name;
  4. pubic virtual void SayHello()
  5. {
  6. Console.WriteLine(".....");
  7. }

  8. }
  9. abstract class Animal
  10. {

  11. public abstract void Walk();
  12. }
  13. Class Student :Person
  14. {
  15. pubic override void SayHello()
  16. {
  17. Console.WriteLine(".....");

  18. }

  19. }

  20. Class Dog:Animal
  21. {
  22. public override void Walk()
  23. {
  24. console.writeline("...");

  25. }


  26. }
复制代码












回复 使用道具 举报
用在方法重写,只不过虚方法可以实例化可以继承;而抽象方法的抽象类只能拿来继承,而不能实例化,抽象类一般是在父类完全不需要实例化而只是拿来继承时用的
回复 使用道具 举报
本帖最后由 shangxin 于 2014-3-16 10:31 编辑

抽象方法是只有定义、没有实际方法体的函数,它只能在抽象函数中出现,并且在子类中必须重写;虚方法则有自己的函数体,已经提供了函数实现,但是允许在子类中重写或覆盖。
回复 使用道具 举报
张变 发表于 2014-3-16 07:44
父类(具体类)方法被子类重写时,父类中的被重写的方法定义为虚方法抽象类中不需实现的方法定义为抽象方法 ...

技术分+1
回复 使用道具 举报

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