Abstraction

From JholJhapata

Abstraction is the process representing essential features without including background details, to reduce the complexity for the users. Abstraction can be achieved with either abstract classes or interfaces.

Abstract class & Abstract method

Abstract keyword is used with classes and methods:

  • Abstract class is a restricted class that cannot be used to create objects. To access it, it must be inherited from another class.
  • Abstract method can only be used in an abstract class, and it does not have a body. The body is provided by the derived class.
   abstract class Software
   {
       // Abstract method (does not have a body)
       public abstract void addIcon();
       // Regular method
       public void defaltPath()
       {
           Console.WriteLine("c:");
       }
   }
   // Derived class (inherit from Software)
   class WinZip : Software
   {
       public override void addIcon()
       {
           // The body of addIcon() is provided here
           Console.WriteLine("Desktop");
       }
   }
   class Program
   {
       static void Main(string[] args)
       {
           WinZip myWinZip = new WinZip(); // Create a WinZip object
           myWinZip.defaltPath();  // Call the abstract method
           myWinZip.addIcon();  // Call the regular method
       }
   }

Interface

An interface is a completely "abstract class", which can only contain abstract methods and properties (with empty bodies). Interface is another way to achieve abstraction in C#.

   interface Software
   {
       // Abstract method (does not have a body)
       void addIcon();
       // Abstract method (does not have a body)
       void defaltPath();
   }
   // Derived class (inherit from Software)
   class WinZip : Software
   {
       public void addIcon()
       {
           // The body of addIcon() is provided here
           Console.WriteLine("Desktop");
       }
       public void defaltPath()
       {
           // The body of defaltPath() is provided here
           Console.WriteLine("c:");
       }
   }
   class Program
   {
       static void Main(string[] args)
       {
           WinZip myWinZip = new WinZip(); // Create a WinZip object
           myWinZip.defaltPath();  // Call the regular method
           myWinZip.addIcon();  // Call the regular method
       }
   }