जब मैं अपना खुद का एंड्रॉइड कस्टम क्लास बना देता हूं, तो मैं extend
अपनी मूल कक्षा बना देता हूं। फिर जब मैं आधार विधि ओवरराइड करना चाहते हैं, मैं हमेशा super()
विधि कॉल, जैसे मैं हमेशा, आदिओवरराइड करते समय सुपर() विधि को कॉल न करें?
onCreate
, onStop
में क्या और मुझे लगा कि यह ऐसा है, बहुत शुरुआत एंड्रॉयड टीम से हमेशा की तरह करने के लिए हमें सलाह दी प्रत्येक विधि ओवरराइड पर super
पर कॉल करें।
लेकिन, कई किताबें में मैं देख सकता हूँ कि डेवलपर्स, अपने आप की तुलना में अधिक अनुभवी अक्सर super
बुला छोड़ देते हैं और मैं वास्तव में संदेह है कि वे ज्ञान की कमी के रूप में करते हैं।
public class SAXParser extends DefaultHandler{
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
if(qName.equalsIgnoreCase("XXY")) {
//do something
}
}
public void characters(char[] ch, int start, int length) throws SAXException {
//do something
}
public void endElement(String uri, String localName, String qName) throws SAXException {
if(qName.equalsIgnoreCase("XXY")) {
//do something
}else() {
//do something
}
}
}
आप ग्रहण या किसी अन्य आईडीई के माध्यम से किसी भी ओवरराइड विधि बनाने की कोशिश करते हैं, तो super
हमेशा एक रूप में बनाया जाएगा: उदाहरण के लिए, इस बुनियादी SAX पार्सर वर्ग जहां super
startElement
, characters
और endElement
में छोड़ दिया जाता है पर देखने के स्वचालित प्रक्रिया का हिस्सा।
यह एक साधारण उदाहरण था। किताबें समान कोड से भरे हुए हैं।
उन्हें कैसे पता चलेगा कि आपको super
पर कॉल करना होगा और जब आप इसे कॉल कर सकते हैं?
पीएस। इस विशिष्ट उदाहरण से बंधे मत बनो। यह कई उदाहरणों से यादृच्छिक रूप से चुना गया एक उदाहरण था।
(यह अभी शुरुआत सवाल की तरह लग सकता है, लेकिन मैं वास्तव में उलझन में हूँ।)
'एंडलेमेंट' का एपीआई दस्तावेज़ कहता है, "डिफ़ॉल्ट रूप से, कुछ भी नहीं करें। एप्लिकेशन लेखक इस विधि को ओवरराइड कर सकते हैं ..." जिसका अर्थ है कि आप सुरक्षित रूप से सुपर कॉल कर सकते हैं क्योंकि यह "कुछ भी नहीं" है लेकिन आपको इसकी आवश्यकता नहीं है और आप वास्तव में इसे ओवरराइड कर सकते हैं। यदि आप उस विधि के लिए दस्तावेज़ पढ़ते हैं तो आप अक्सर यह बता सकते हैं कि क्या आपको इसे करना/नहीं करना चाहिए। – zapl
छोटा उदाहरण: मैं स्पलैश स्क्रीन में बैकप्रेसेड() पर उपयोग करता हूं, और मैं सुपर कॉल नहीं करता हूं इसलिए यह स्पलैश से बाहर नहीं जाता है, यह बस बटन को अक्षम करता है। –
@ सैंडलोन यहां पूछने के लिए खेद है, लेकिन क्या आपको इन-ऐप बिलिंग के साथ वैट टैक्स को संभालने के तरीके पर कोई अनुभव है, और यह किन देशों को Google द्वारा स्वचालित रूप से किया जाता है, और मुझे वैट टैक्स को मैन्युअल रूप से रिपोर्ट/भुगतान करना पड़ता है? http://stackoverflow.com/questions/36506835/android-in-app-billing-vat-tax –