2010-05-12 16 views
12

मैं इस बारे में उलझन में हूं कि प्रोटोकॉल और इंटरफेस के बीच क्या अंतर है? वे दोनों एक ही काम कर रहे प्रतीत होते हैं?उद्देश्य-सी में प्रोटोकॉल और इंटरफेस के बीच क्या अंतर है?

क्या यह सी # में सार जैसा है जिसमें आपको इसे लागू करने की आवश्यकता है?

+1

[जावा इंटरफेस और उद्देश्य-सी प्रोटोकॉल के बीच मतभेदों के संभावित डुप्लिकेट]] (http://stackoverflow.com/questions/990360/differences-between-java-interfaces-and-objective-c-protocols) –

उत्तर

7

ऑब्जेक्टिव-सी में एक प्रोटोकॉल, जावा में एक अंतरफलक के रूप में ही है अगर thats तुम क्या मतलब है

+0

क्या यह है सी # में अमूर्त की तरह आपको इसे लागू करने की आवश्यकता है? – user333639

+0

यूप, प्रकार। ध्यान दें कि सी # में एक अमूर्त वर्ग और इंटरफेस के बीच मतभेद हैं। लेकिन सी # में एक इंटरफ़ेस जावा में एक इंटरफ़ेस जैसा ही है – SirLenz0rlot

3

ऑब्जेक्टिव-सी: ।

जावा: interface

अन्यथा, कोई फर्क नहीं पड़ता।

8

उद्देश्य सी में एक इंटरफेस एक सी ++ वर्ग घोषणा के बराबर है। और एक प्रोटोकॉल जावा इंटरफेस के बराबर है।

संपादित करें: उद्देश्य सी में कक्षा परिभाषा को इंटरफ़ेस और कार्यान्वयन नामक दो घटकों में विभाजित किया गया है, जो आपको हेडर फ़ाइलों को कम करने की अनुमति देता है। यह सी ++ के समान है। जावा के बराबर नहीं है, क्योंकि आप कक्षा परिभाषा के भीतर अपने वर्ग कार्यों को लागू करते हैं। सी # इस संबंध में जावा के समान है।

0
In Java - you implement an Interface 
In Swift/Objective C - you conform to a Protocol 

"Program to an Interface, not an Implementation" 
- Design Patterns 1995 
0

प्रोटोकॉल संबंधित गुणों और विधियों का एक समूह है जिसे किसी भी वर्ग द्वारा कार्यान्वित किया जा सकता है। वे एक सामान्य वर्ग इंटरफ़ेस से अधिक लचीला होते हैं, क्योंकि वे आपको पूरी तरह से असंबंधित कक्षाओं में एक एकल एपीआई घोषणा का पुन: उपयोग करने देते हैं। इससे मौजूदा वर्ग पदानुक्रम के शीर्ष पर क्षैतिज संबंधों का प्रतिनिधित्व करना संभव हो जाता है।

एक कक्षा इंटरफ़ेस उस वर्ग से जुड़े विधियों और गुणों की घोषणा करता है।

इसके विपरीत, एक प्रोटोकॉल का उपयोग किसी भी विशिष्ट वर्ग से स्वतंत्र विधियों और गुणों की घोषणा करने के लिए किया जाता है।

संबंधित मुद्दे