微信登录

基础 - abstract、virtual、override - 方法类型

作用:标示类型

abstract抽象:没有实现的,只能被继承

父类:

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Diagnostics;
  6. namespace TestAppAllHere
  7. {
  8. abstract class TestAbstractSuper
  9. {
  10. public TestAbstractSuper()
  11. {
  12. Debug.WriteLine("1这是父类的构造方法");
  13. }
  14. public abstract void Init();
  15. public void Hello()
  16. {
  17. Debug.WriteLine("4这是父类的非抽象方法");
  18. }
  19. }
  20. }

子类:

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Diagnostics;
  6. namespace TestAppAllHere
  7. {
  8. class TestAbstractSub:TestAbstractSuper
  9. {
  10. public TestAbstractSub()
  11. {
  12. Debug.WriteLine("2这是子类的构造方法");
  13. }
  14. public override void Init()
  15. {
  16. Debug.WriteLine("3这是子类重写的方法");
  17. }
  18. }
  19. }
  1. 1这是父类的构造方法
  2. 2这是子类的构造方法
  3. 3这是子类重写的方法
  4. 4这是父类的非抽象方法

virtual标识,可重写

override重写

父类:

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Diagnostics;
  6. namespace TestAppAllHere
  7. {
  8. class TestVirtualSuper
  9. {
  10. public TestVirtualSuper()
  11. {
  12. Debug.WriteLine("1这是父类的构造方法");
  13. }
  14. public virtual void Init()
  15. {
  16. Debug.WriteLine("2这是父类的虚拟方法");
  17. }
  18. }
  19. }

子类1:

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Diagnostics;
  6. namespace TestAppAllHere
  7. {
  8. class TestVirtualSub:TestVirtualSuper
  9. {
  10. public TestVirtualSub()
  11. {
  12. Debug.WriteLine("3这是子类的构造方法");
  13. }
  14. public override void Init()
  15. {
  16. //base.Init();//这句话可以让虚拟方法执行
  17. Debug.WriteLine("4这是子类的重写方法");
  18. }
  19. }
  20. }
  1. 1这是父类的构造方法
  2. 3这是子类的构造方法
  3. 4这是子类的重写方法