黑马程序员技术交流社区

标题: 虚方法和抽象方法有什么不同? [打印本页]

作者: Doublekill    时间: 2014-3-16 07:24
标题: 虚方法和抽象方法有什么不同?
本帖最后由 Doublekill 于 2014-3-16 20:30 编辑

他们分别在什么时候用啊,有点迷糊
作者: 张变    时间: 2014-3-16 07:44
父类(具体类)方法被子类重写时,父类中的被重写的方法定义为虚方法抽象类中不需实现的方法定义为抽象方法,没有方法体,由实现类去实现
举个例子:
  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. }
复制代码













作者: 回忆~坚    时间: 2014-3-16 10:20
用在方法重写,只不过虚方法可以实例化可以继承;而抽象方法的抽象类只能拿来继承,而不能实例化,抽象类一般是在父类完全不需要实例化而只是拿来继承时用的
作者: shangxin    时间: 2014-3-16 10:29
本帖最后由 shangxin 于 2014-3-16 10:31 编辑

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

技术分+1
作者: 张变    时间: 2014-3-16 21:44
Doublekill 发表于 2014-3-16 20:29
技术分+1

呵呵。。。。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2