मुझे यह भी सिखाया गया है और मैं जहां संभव हो इंटरफेस पसंद करता हूं (निश्चित रूप से मैं अभी भी विरासत का उपयोग करता हूं जहां समझ है)।
एक बात मुझे लगता है कि यह विशिष्ट कार्यान्वयन से आपके कोड को कम कर देती है। कहो कि मेरे पास कंसोलवर्टर नामक एक वर्ग है और वह कुछ लिखने के लिए एक विधि में पारित हो जाता है और इसे कंसोल पर लिख देता है। अब मैं कहता हूँ कि मैं GUI विंडो पर मुद्रण करना चाहता हूँ। खैर अब मुझे या तो विधि को संशोधित करना होगा या एक नया लिखना होगा जो GUIWriter को एक पैरामीटर के रूप में लेगा। अगर मैंने एक IWriter इंटरफ़ेस को परिभाषित करके शुरू किया था और IWriter में विधि लेता था जिसे मैं ConsoleWriter के साथ शुरू कर सकता था (जो IWriter इंटरफ़ेस को लागू करेगा) और फिर बाद में GUIWriter नामक एक नया वर्ग (जो IWriter इंटरफ़ेस को लागू करता है) लिखता है और फिर मैं बस पास होने वाले वर्ग को बंद करना होगा।
एक और बात (जो सी # के लिए सच है, जावा के बारे में निश्चित नहीं है) यह है कि आप केवल 1 वर्ग का विस्तार कर सकते हैं लेकिन कई इंटरफेस को लागू कर सकते हैं। बता दें कि मेरे पास टीचर, मैथ टीचर और हिस्ट्री टीचर नाम की कक्षाएं थीं। अब MathTeacher और HistoryTeacher का विस्तार शिक्षक से होता है लेकिन क्या होगा अगर हम एक ऐसा वर्ग चाहते हैं जो किसी ऐसे व्यक्ति का प्रतिनिधित्व करे जो MathTeacher और HistoryTeacher दोनों हो। जब आप केवल एक ही समय में एक कर सकते हैं (कई तरीके हैं, लेकिन वे बिल्कुल इष्टतम नहीं हैं) तो कई वर्गों से विरासत की कोशिश करते समय यह बहुत गड़बड़ हो सकता है। इंटरफेस के साथ आपके पास 2 इंटरफेस हो सकते हैं जिन्हें IMathTeacher और IHistoryTeacher कहा जाता है और फिर एक वर्ग होता है जो शिक्षक से विस्तारित होता है और उन 2 इंटरफेस को लागू करता है।
एक नकारात्मक पहलू यह है कि इंटरफेस का उपयोग करने के साथ यह है कि कभी-कभी मैं लोगों को डुप्लिकेट कोड देखता हूं (क्योंकि आपको इंटरफ़ेस को लागू करने वाले प्रत्येक वर्ग के लिए कार्यान्वयन बनाना होगा) हालांकि इस समस्या का एक स्वच्छ समाधान है, उदाहरण के लिए प्रतिनिधियों जैसी चीजों का उपयोग (निश्चित नहीं) इसके बराबर जावा क्या है)।
इनहेरिटेंस पर इंटरफेस का उपयोग करने का सबसे बड़ा कारण कार्यान्वयन कोड का डिकॉप्लिंग है, लेकिन यह मत सोचो कि इनहेरिटेंस बुराई है क्योंकि यह अभी भी बहुत उपयोगी है।