What is the Difference Between Virtual and Abstract?

🆚 Go to Comparative Table 🆚

The main differences between virtual and abstract methods are as follows:

  • Implementation: Abstract methods have no implementation, while virtual methods have a default implementation.
  • Overriding: Abstract methods must be overridden in derived classes, while virtual methods can be overridden in derived classes if desired.
  • Scope: The scope of abstract methods is limited to the members and classes, while the scope of virtual methods is limited to the members of the class.
  • Declaration: Abstract methods can only be declared in abstract classes, while virtual methods can be declared in both abstract and non-abstract classes.
  • Abstract Class: If a class contains an abstract method, it must be declared as abstract, and other methods in that class can be either abstract or virtual.

In summary, virtual methods have a default implementation and can be overridden in derived classes if needed, while abstract methods have no implementation and must be overridden in derived classes. Abstract methods can only be declared in abstract classes, and virtual methods can be declared in both abstract and non-abstract classes.

Comparative Table: Virtual vs Abstract

Here is a table summarizing the differences between virtual and abstract methods:

Feature Virtual Methods Abstract Methods
Definition Virtual methods have an implementation and provide the derived classes with the option of overriding it. Abstract methods do not provide an implementation and force the derived classes to override the method.
Use Case Can be used when you require default implementations but need a different implementation in child classes. Can be used when classes are incomplete, or you do not want to provide any default implementation, but it indicates to child classes that this functionality has to be implemented.
Inheritance A class inheriting another class with a virtual method can execute the latter with no implementation, but the programmer can override the implementation of virtual methods in the descending class if needed. Programmers developing classes that inherit abstract classes with one or more abstract methods must implement the abstract method in the descending classes.
Modifiers Cannot be used with abstract, static, private, or override modifiers. Can be used with abstract, static, private, or override modifiers.
Polymorphism Virtual methods allow dynamic polymorphism. Abstract methods allow information hiding or abstraction.
Method Body Virtual methods can provide a default implementation. Abstract methods do not have a method body.
Overriding It is optional for virtual methods to be overridden in child classes. It is mandatory for abstract methods to be overridden in child classes.

In conclusion, abstract and virtual methods are two ways to achieve method overriding in child classes, but they differ in terms of implementation, inheritance, and modifiers.