C# Interfaces

Introduction to C# Interfaces

एक interface में methods, properties, indexers और events जैसी functionalities को define किया जाता है। Interface में किसी भी functionality का सिर्फ signature define किया जाता है। Interface में define की गयी functionalities के लिए definition वह struct या class provide करती है जो interface को implement करती है।

Interfaces classes को एक behaviour follow करने के लिए bound करते है। उदाहरण के लिए आपने एक बहुत अच्छी application develop की है। अब एक दूसरा programmer भी उसी तरह की application create करना चाहता है। इसके लिए वह programmer आपसे मदद माँगता है।

आप उस programmer को उन functionalities के बारे में बताते है जो उसे उस तरह की application create करने के लिए आवश्यक रूप से define करनी होगी। इसके बाद वह programmer उन functionalities को अपने according define करता है और application create करता है।

आप सिर्फ उस programmer को बताते है की उसे क्या करना है। यह उस programmer पर depend करता है की वह उसे किस प्रकार करेगा।

जिस प्रकार आपने उस programmer को बताया की उसे क्या करना चाहिए। उसी प्रकार interfaces भी classes को बताते है की उन्हें क्या क्या functionalities implement करनी चाहिए। Interfaces का काम सिर्फ यह बताना होता है क्या करना है? यह classes पर depend करता है की वह उन functionalities को कैसे implement करेगी?

Interface को implement करने वाली class के लिए interface में define की गयी सभी functionalities की definition provide करना अनिवार्य होता है।

C# में multiple inheritance allow नहीं है। Interfaces के माध्यम से आप classes में multiple behaviours include कर सकते है। क्योंकि classes एक से अधिक interfaces को implement कर सकती है।

C# में structs inheritance को support नहीं करते है लेकिन वे interfaces को implement कर सकते है। इसलिए यदि आप structs के लिए inheritance feature को use करना चाहते है तो interfaces को use कर सकते है।

एक interface में आप constants, fields, operators, constructors, finalizers और types नहीं define कर सकते है।

सभी interface members automatically public होते है और उनके लिए आप किसी प्रकार का access modifier नहीं use कर सकते है।

Interfaces abstract classes की तरह ही होते है। फर्क सिर्फ यह होता है की abstract classes में functionalities की definition भी provide की जा सकती है।

जब एक class किसी interface के members को implement करे तो यह आवश्यक है की class में सभी members public और non static define किये जाएँ। इसके अलावा class में implement किये जा रहे members का signature interface members के signature से match होना चाहिए।

Interface को implement करने वाली class interface में declare की गयी properties और indexers के लिए extra accessors define कर सकती है। उदाहरण के लिए यदि interface में किसी property के लिए सिर्फ get accessor define किया गया है तो उसे implement करने वाली class get और set दोनों accessors define कर सकती है।

एक interface दूसरे interfaces को भी implement कर सकता है।

यदि किसी class की base class किसी interface को implement करती है तो वह class भी automatically उस interface को implement करती है लेकिन यह जरुरी है की interface के members की definition base class में provide की जाए। क्योंकि जो class interface को directly inherit करती है वही उसके members को implement करती है।

एक interface को directly instantiate नहीं किया जा सकता है। Interfaces को classes के द्वारा implement किया जाता है। Interfaces में define किये गए methods की कोई definition नहीं होती है।

Syntax of C# Interfaces

निचे C# में interfaces को declare करने का general syntax दिया जा रहा है।

public interface interface-name
{
     //Interface members, only declaration
}

Interfaces को declare करने के बाद उन्हें classes द्वारा implement किया जाता है। Classes द्वारा interfaces को implement करने का general syntax निचे दिया जा रहा है।

class class-name : interface-name
{
    //Definition of interface members
   //Other class members
}

Example of C# Interfaces

C# में interfaces के use को निचे उदाहरण द्वारा समझाया जा रहा है।

using System;

public interface myInterface
{
    void displayColor();
}

class redColor:myInterface
{
    public void displayColor()
    {
        Console.WriteLine("This is red class");
    }
}

class greenColor:myInterface
{
    public void displayColor()
    {
       Console.WriteLine("This is green class");
    }
}

class interfaceDemo
{
   static void Main(String[] args)
   {
        redColor rObj = new redColor();
        rObj.displayColor();
        greenColor gObj = new greenColor();
        gObj.displayColor();
   }

}

ऊपर दिया गया उदाहरण निचे दिया गया output generate करता है।

This is red class
This is green class