2012-10-22 20 views
29

मान लीजिए कि मेरे पास जावा क्लास में कोई विधि है, और मैं नहीं चाहता कि उस वर्ग का कोई उप-वर्ग उस विधि को ओवरराइड करने में सक्षम हो। क्या मै वह कर सकता हूं?जावा विधि को ओवरराइड करने से उप-वर्गों को अस्वीकार करें

उत्तर

47

आप प्रणाली की घोषणा, final होने के लिए के रूप में कर सकते हैं:

public final String getId() { 
    ... 
} 

अधिक जानकारी के लिए, देखें http://docs.oracle.com/javase/tutorial/java/IandI/final.html

+0

यह इतना स्पष्ट है, मैंने इस बारे में क्यों नहीं सोचा? – xorinzor

7

सीधे शब्दों में विधि अंतिम बनाते हैं।

3

यदि आपकी विधि आपके निर्मित एपीआई का हिस्सा नहीं है और इसे सीधे उप-वर्गों द्वारा नहीं बुलाया जाता है, तो बस अपनी विधि private बनाना पसंद करें।

यदि आपकी कक्षा पदानुक्रम एक ही पैकेज में निहित है, तो अपनी विधि पैकेज स्कोप (स्कोपिंग के कीवर्ड के बिना) में करें। इस प्रकार, केवल बाहरी दुनिया (आपके अन्य पैकेज शामिल हैं) इसे एक्सेस नहीं कर सकते हैं और इसलिए इसे ओवरराइड नहीं कर सकते हैं।

, अपने विधि वास्तव में अपने एपीआई का हिस्सा नहीं है लेकिन उपवर्गों भी बाहरी से दृश्यमान होना चाहिए तो पसंद करते हैं यह protected और final

अंत में अगर आपके विधि अपने एपीआई का हिस्सा है, कर इसे public और final