इंटरफेस एक टाइप होता है जिसमें ऐसे मेंबर होते हैं जो आपस में जुड़े कामों के एक समूह को परिभाषित करते हैं। यह क्लास के इस्तेमाल को उसके कार्यान्वयन से अलग कर देता है। इससे एक ही चीज़ के कई अलग-अलग कार्यान्वयन बनाए जा सकते हैं, और फॉर्मेटिंग, तुलना या कन्वर्ज़न जैसे सामान्य व्यवहारों का समर्थन भी किया जा सकता है।
इंटरफेस का सिंटैक्स क्लास या स्ट्रक्ट जैसा ही होता है। फर्क सिर्फ इतना है कि इसमें मेथड और प्रॉपर्टी केवल सिग्नेचर के रूप में दिखते हैं और उनकी कोई बॉडी नहीं दी जाती।
public interface ILanguage
{
string LanguageName { get; set; }
string Speak();
}
public class ItalianTaveller : ILanguage, ICloneable
{
public string LanguageName { get; set; } = "Italiano";
public string Speak()
{
return "Ciao mondo";
}
public object Clone()
{
ItalianTaveller it = new ItalianTaveller();
it.LanguageName = this.LanguageName;
return it;
}
}
इंटरफेस में परिभाषित सभी ऑपरेशन लागू करना ज़रूरी है।
इंटरफेस में दूसरे मेंबरो के साथ इंस्टेंस मेथड और प्रॉपर्टी भी हो सकते हैं।
किसी ऑब्जेक्ट की तुलना दूसरे ऑब्जेक्ट से हो सके, इसके लिए उसे IComparable<T> इंटरफेस लागू करना होता है।
इस इंटरफेस में एक ही मेथड होता है जिसे लागू करना ज़रूरी है: int CompareTo(T other).
CompareTo मेथड के लिए तीन रिटर्न वैल्यू संभव हैं:
इस अभ्यास में आप रिमोट कंट्रोल कारों पर कुछ और काम करेंगे।
एक एक्सपेरिमेंटल कार बनाई जा चुकी है, और अब टेस्ट ट्रैक को ऐसा बनाना है कि वह प्रोडक्शन और एक्सपेरिमेंटल, दोनों तरह के मॉडलों को संभाल सके। दोनों तरह की कारें पहले ही बन चुकी हैं, और आपको कोई ऐसा तरीका निकालना है जिससे टेस्ट ट्रैक पर दोनों के साथ काम चल सके।
इसके अलावा, प्रोडक्शन कारों को अब कुछ सफलता भी मिलने लगी है। टीम के मुखिया प्रोडक्शन कारों की रैंकिंग जारी करके प्रतिस्पर्धा की भावना बनाए रखना चाहते हैं।
कृपया IRemoteControlCar इंटरफेस में एक मेथड जोड़िए, जो दोनों तरह की कारों के लिए Drive() का इम्प्लीमेंटेशन सामने लाए।
TestTrack.Race(new ProductionRemoteControlCar());
TestTrack.Race(new ExperimentalRemoteControlCar());
// this should execute without an exception being thrown
कृपया IRemoteControlCar इंटरफेस में एक प्रॉपर्टी जोड़िए, जो दोनों तरह की कारों के लिए DistanceTravelled प्रॉपर्टी का इम्प्लीमेंटेशन सामने लाए।
var prod = new ProductionRemoteControlCar();
TestTrack.Race(prod);
var exp = new ExperimentalRemoteControlCar();
TestTrack.Race(exp);
prod.DistanceTravelled
// => 10
exp.DistanceTravelled
// => 20
कृपया ProductionRemoteControlCar क्लास में IComparable<T> इंटरफेस लागू कीजिए। कारों को छाँटने का सामान्य क्रम जीतों के आरोही क्रम में होना चाहिए।
static TestTrack.GetRankedCars() मेथड को लागू कीजिए, जो दी गई कारों को जीतों की संख्या के आरोही क्रम में छाँटकर लौटाए।
var prc1 = new ProductionRemoteControlCar();
var prc2 = new ProductionRemoteControlCar();
prc1.NumberOfVictories = 3;
prc2.NumberOfVictories = 2;
var rankings = TestTrack.GetRankedCars(prc1, prc2);
// => rankings[1] == prc1
Exercism पर साइन अप कीजिए और C# को 62 कॉन्सेप्ट178 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।