Skip to main content

Difference between Abstract Class and Interface with example in c#


1. Multiple inheritance

 A class may inherit several interfaces.
 class abc : ICrud,IDisposal

 A class may inherit only one abstract class.
 class abc : parentClass

2. Default implementation

Interface: An interface cannot provide any code, just the signature.
Example:

interface IPerson
    {
        void Add(string name, string email);
    }
   
Abstract class: An abstract class can provide complete, default code and/or just the details that have to be overridden.
Example:

abstract class APerson
    {
        //
        string Name;
        string Email;

       // like interface
       public abstract void Add(string name, string email);
      
       public void Update()
       {

       }

    }

3. Access Modifiers


Interface: An interface cannot have access modifiers for the subs, functions, properties etc everything is assumed as public

    interface IPerson
    {
        void Add(string name, string email);
    }

    class iPerson : IPerson
    {
        string Name;
        string Email;

        public void Add(string name, string email)
        {
            Email = email;
            Name = name;
        }
    }

Abstract Class: An abstract class can contain access modifiers for the subs, functions, properties

abstract class APerson
    {
        //
        protected string Name;
        protected string Email;

        // like interface
        protected abstract void Add(string name, string email);

        protected void Update()
        {

        }

    }

    class person : APerson
    {
        protected override void Add(string name, string email)
        {
            Email = email;
            Name = name;
        }
    }

4. Where to Use

Interface: If various implementations only share method signatures then it is better to use Interfaces.

Abstract Class: If various implementations are of the same kind and use common behaviour or status then abstract class is better to use.

5. Speed

Interface: Requires more time to find the actual method in the corresponding classes.

Abstract Class: Faster then Interface

Comments

Popular posts from this blog

Change Key Dynamically in Web.Config

System.Xml; private void SetConfigSettings() { string path = Server.MapPath("Web.config"); string newConnectionString = @"Server=local;Database="+txtDatabaseName.Text+";Trusted_Connection=true"; XmlDocument xDoc = new XmlDocument(); xDoc.Load(path); XmlNodeList nodeList = xDoc.GetElementsByTagName("appSettings"); XmlNodeList nodeAppSettings = nodeList[0].ChildNodes; XmlAttributeCollection xmlAttCollection = nodeAppSettings[0].Attributes; xmlAttCollection[0].InnerXml = txtKey.Text; // for key attribute xmlAttCollection[1].InnerXml = newConnectionString; // for value attribute xDoc.Save(path); // saves the web.config file }

ASP.Net Page Life Cycle

The ASP.Net life cycle could be divided into two groups: Application Life Cycle Page Life Cycle ASP.Net Application Life Cycle: The application life cycle has the following stages: User makes a request for accessing application resource, a page. Browser sends this request to the web server. A unified pipeline receives the first request and the following events take place: An object of the ApplicationManager class is created. An object of the HostingEnvironment class is created to provide information regarding the resources. Top level items in the application are compiled. Response objects are created . the application objects: HttpContext, HttpRequest and HttpResponse are created and initialized. An instance of the HttpApplication object is created and assigned to the request. The request is processed by the HttpApplication class. Different events are raised by this class for processing the request. ASP.Net Page Life Cycle: When a page is requested, it is loaded...