/ / हमें तरीकों को ओवरराइड करने की आवश्यकता क्यों है - ऑब्जेक्टिव-सी? - आईओएस, उद्देश्य-सी, वंशानुक्रम

हमें विधियों को ओवरराइड करने की आवश्यकता क्यों है - उद्देश्य-सी? - आईओएस, उद्देश्य-सी, विरासत

मैं ऑब्जेक्टिव-सी के लिए नया हूं और मैंने वेब डेवलपिंग (php) से लेकर ios डेवलपिंग तक बड़ा कदम उठाया।

मुझे सुपरक्लास से तरीकों को ओवरराइड और कार्यान्वित क्यों करना चाहिए?
डॉन "इन विधियों पहले से ही उनके सुपरक्लास में मौजूद हैं?

उदाहरण के लिए, मेरे पास एक टेबल व्यू कंट्रोलर है। क्यों नहीं है "एक संपत्ति की तरह: पंक्तियों की संख्या, एक विधि को लागू करने के बजाय?
और सुपरक्लॉस में मौजूद सभी विधियों को हम लागू क्यों नहीं करते?

मुझे लगता है कि मैं उद्देश्य-सी में विरासत प्रणाली के सभी में ज्ञान की कमी है।

उत्तर:

जवाब के लिए 0 № 1

ऑब्जेक्ट ओवरराइडिंग, ऑब्जेक्ट ओरिएंटेडप्रोग्रामिंग, एक भाषा सुविधा है जो एक उपवर्ग या बाल वर्ग को एक ऐसी विधि का विशिष्ट कार्यान्वयन प्रदान करने की अनुमति देती है जो पहले से ही उसके किसी सुपरक्लास या माता-पिता वर्गों द्वारा प्रदान की जाती है। उपवर्ग में कार्यान्वयन ओवरक्लाइड को प्रतिस्थापित करता है (प्रतिस्थापित करता है) सुपरक्लास में एक ऐसा तरीका प्रदान करता है जिसमें समान नाम, समान पैरामीटर या हस्ताक्षर हों, और मूल वर्ग में विधि के समान रिटर्न प्रकार। निष्पादित करने के लिए एक विधि का संस्करण उस ऑब्जेक्ट द्वारा निर्धारित किया जाएगा जो इसे लागू करने के लिए उपयोग किया जाता है। यदि विधि को लागू करने के लिए किसी मूल श्रेणी के ऑब्जेक्ट का उपयोग किया जाता है, तो मूल वर्ग में संस्करण निष्पादित किया जाएगा, लेकिन यदि विधि का उपयोग करने के लिए उपवर्ग का कोई ऑब्जेक्ट उपयोग किया जाता है, तो चाइल्ड क्लास में संस्करण निष्पादित किया जाएगा। यह वस्तु उन्मुख प्रोग्रामिंग का एक बहुत शक्तिशाली पहलू है। उदाहरण के लिए: C उपवर्ग B और B उपवर्ग A

उन सभी के पास एक ही मैथोड प्रिंट है यदि आपके पास एक उदाहरण नाम के साथ गिरफ्तारी है मैं गिरफ्तारी में { प्रिंट (i) } अच्छा मेथोड प्रिंट "प्रत्येक वस्तु के लिए कॉल किया जाएगा।"


जवाब के लिए 0 № 2

आप अधिभावी तरीकों के बारे में बात कर रहे हैं लेकिनउदाहरण जो आपने टेबल व्यू के साथ दिया है वह विधियों को ओवरराइड नहीं कर रहा है। TableView प्रतिनिधि पैटर्न का उपयोग कर रहा है। प्रतिनिधि पैटर्न में, एक प्रोटोकॉल है जिसे परिभाषित किया गया है। उदाहरण के रूप में UITableView का उपयोग करें:

परिभाषित प्रोटोकॉल UITableviewDataSource है। यह मूल रूप से एक घोषणा है कि जो भी संख्याओं की संख्याएं हैं जैसे कि इस प्रोटोकॉल के अनुरूप जो भी वर्ग में मौजूद होना चाहिए।

जब आप टेबल व्यू को बताते हैं कि आप किसके अनुरूप हैंइसका UITableViewDataSource प्रोटोकॉल tableview.dataSource = self कहकर, आप इसे बता रहे हैं कि आप UITableviewDataSource घोषणा में सूचीबद्ध तरीकों को लागू करते हैं।

यह पैटर्न तालिका दृश्य के लिए एक एपीआई बनाता हैवर्ग का ज्ञान प्रदान किए बिना उपभोग करना। अनिवार्य रूप से, टेबलव्यू आपके वर्ग को यूआईटेबलव्यूडाटा सोर्स सोर्स के माध्यम से जानकारी के लिए पूछेगा जो परिभाषित किया गया था।

आप इसे लागू करने के पेशेवरों और विपक्षों को खोजने के लिए प्रतिनिधि पैटर्न पर एक खोज कर सकते हैं।