Difference Between Abstract and Virtual Method in Abstract Class
· One must declare abstract method,properties,indexers,events in abstract class
· We can Declare virtual method in abstract class
· If u have abstract method in base class then u have to(mandatory) implement this abstract method in derived class
· In case if u have virtual method in abstract class then it’s not mandatory to implement it in derived class. This main difference between virtual and abstract
· By default all the methods in abstract class are virtual
· If we have virtual method in base class which is abstract class then we override this abstract method in derived class so when we call this method by creating the object of derived class in this case derived class override method will executed and if we want to execute base class virtual method then we use base Keyword. See example
abstract class AbstractClassDemo
{
public virtual void Family()
{
Console.WriteLine("Method Family in Base Class ");
}
}
class Derived_abstract : AbstractClassDemo
{
public override void Family()
{
base.Family();
Console.WriteLine("Method Family in Derived Class");
}
}
In Main Just Call this as
static void Main(string[] args)
{
Derived_abstract objDerived_abstract = new Derived_abstract();
objDerived_abstract.Family();
Console.ReadLine();
}
}
Just because of base.Family(); virtual method in base class executed
Output as
Method Family in Base Class
Method Family in Derived Class
· Error an abstract class cannot be sealed or static
sealed abstract class AbstractClassDemo
{
public abstract void Animal(string strAnimal);
public virtual void Family()
{
Console.WriteLine("Method Family in Base Class ");
}
}
Complete Source Codeusing System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace AbstractCLass
{
abstract class AbstractClassDemo
{
public abstract void Animal(string strAnimal);
public virtual void Family()
{
Console.WriteLine("Method Family in Base Class ");
}
}
class Derived_abstract : AbstractClassDemo
{
public override void Family()
{
base.Family();
Console.WriteLine("Method Family in Derived Class");
}
public override void Animal(string strAnimal)
{
Console.WriteLine("This animal is := "+strAnimal);
}
}
}