虚拟和抽象方法之间的区别

这个问题在这里已经有了答案:

  • 抽象函数和虚函数之间有什么区别? 21个答案

  • 虚拟方法有一个实现,并为派生类提供覆盖它的选项。 抽象方法不提供实现并强制派生类重写该方法。

    因此,抽象方法没有实际的代码,而子类必须覆盖该方法。 虚拟方法可以具有代码,通常是默认实现的东西,任何子类都可以使用override修饰符覆盖方法,并提供自定义实现。

    public abstract class E
    {
        public abstract void AbstractMethod(int i);
    
        public virtual void VirtualMethod(int i)
        {
            // Default implementation which can be overridden by subclasses.
        }
    }
    
    public class D : E
    {
        public override void AbstractMethod(int i)
        {
            // You HAVE to override this method
        }
        public override void VirtualMethod(int i)
        {
            // You are allowed to override this method.
        }
    }
    

    首先你应该知道虚拟和抽象方法之间的区别。

    抽象方法

  • 抽象方法驻留在抽象类中,它没有主体。
  • 抽象方法必须在非抽象子类中重写。
  • 虚拟方法

  • 虚拟方法可以驻留在抽象类和非抽象类中。
  • 没有必要重写派生的虚拟方法,但它可以。
  • 虚拟方法必须具有正文....可以通过“覆盖关键字”覆盖.....

  • 一个抽象方法必须是派生类中的调用重写,否则它会给编译时错误,并且在虚拟中,您可能会或可能不会重写它,取决于它是否足够好用它

    例:

    abstract class twodshape
    {
        public abstract void area(); // no body in base class
    }
    
    class twodshape2 : twodshape
    {
        public virtual double area()
        {
            Console.WriteLine("AREA() may be or may not be override");
        }
    }
    
    链接地址: http://www.djcxy.com/p/38111.html

    上一篇: Difference between virtual and abstract methods

    下一篇: Anyone know a quick way to get to custom attributes on an enum value?