मैं StringTokenizer.java
कक्षा की जांच कर रहा था और कुछ प्रश्न थे जो दिमाग में आए थे।सार्वजनिक तरीकों से निजी तरीके
मैंने देखा कि सार्वजनिक वर्गों का उपयोग अन्य वर्गों द्वारा किया जाना है, जो कुछ निजी कामों का आह्वान करते हैं, जो सभी काम करते थे। अब, मुझे पता है कि ओओडी के सिद्धांतों में से एक है जितना आप निजी कर सकते हैं और सभी कार्यान्वयन विवरण छुपा सकते हैं। मुझे यकीन नहीं है कि मैं इसके पीछे तर्क को पूरी तरह से समझता हूं।
मैं समझता हूं कि उन क्षेत्रों में अवैध मूल्यों को संग्रहीत करने के लिए फ़ील्ड को निजी बनाना महत्वपूर्ण है (केवल कई कारणों में से एक)। हालांकि, जब निजी तरीकों की बात आती है, तो मुझे यकीन नहीं है कि वे क्यों महत्वपूर्ण हैं।
उदाहरण के लिए, StringTokenizer
कक्षा के मामले में, क्या हमने सार्वजनिक विधियों के भीतर सभी कार्यान्वयन कोड को नहीं रखा है? इन तरीकों के लिए एपीआई के बाद इन तरीकों का उपयोग करने वाले वर्गों में इससे कोई फर्क कैसे पड़ता है (यानी इन सार्वजनिक तरीकों को कॉल करने के नियम) वही रहेगा? एकमात्र कारण मैं सोच सकता हूं कि क्यों निजी तरीके उपयोगी हैं क्योंकि यह आपको डुप्लिकेट कोड लिखने में मदद करता है। उदाहरण के लिए, यदि सभी सार्वजनिक तरीकों ने एक ही काम किया है, तो आप एक निजी विधि घोषित कर सकते हैं जो यह कार्य करता है और जिसका उपयोग सार्वजनिक तरीकों से किया जा सकता है।
अन्य प्रश्न, सार्वजनिक विधि के विपरीत निजी विधि में कार्यान्वयन लिखने का क्या फायदा है?
public class Sum{
private int sum(int a, int b){
return a+b;
}
public int getSum(int a, int b){
return sum(a,b);
}
}
बनाम ...
public class Sum{
public int getSum(int a, int b){
return a+b;
}
}
कैसे पहला नमूना अधिक फायदेमंद है:
यहाँ एक छोटा सा उदाहरण है?
मुझे आपका अंक नहीं मिला। अगर मुझे कुछ याद आ रहा है तो मुझे माफ़ कर दो। मैं आपसे कहता हूं: "इसलिए एक निजी विधि हमेशा अच्छी होती है क्योंकि आप जानते हैं कि इसे बदलने के बारे में कोई समस्या नहीं है, यहां तक कि आप विधि में सुरक्षित रूप से अधिक पैरामीटर जोड़ सकते हैं"। लेकिन आप क्लाइंट का सामना करने वाली सार्वजनिक एपीआई अभी भी वही है। इसलिए आप एक सार्वजनिक विधि के अंदर सभी तर्क लिखते हैं या इसके अंदर एक फ़ंक्शन को कॉल करते हैं या जो भी ग्राहक सार्वजनिक एपीआई को देखता है वह किसी भी अंतर को पर्यवेक्षक नहीं करता है। कार्यान्वयन के अंदर कोड अभी भी किसी भी समय बदला जा सकता है जो निजी समारोह के अनुबंध/कार्यान्वयन में परिवर्तन करने के रूप में अच्छा है – Saurabh
@saury इस विशेष मामले में, हाँ, यह वही एपीआई है, लेकिन फिर भी आपने इसकी गारंटी नहीं दी है भविष्य में इसे रखने वाला है। अपने अनुभव से मैं आपको सलाह देता हूं कि "ओह, आइए इसे सीधे सार्वजनिक करें और, अगर भविष्य में हमें इसे निजी की जरूरत है, तो हम इसे बदल देंगे" क्या हो रहा है यह है कि ऐसी विधियां कभी निजी नहीं होतीं, इसलिए यह शुरुआत में एक विशाल रिफैक्टर करने के बजाय शुरुआत में थोड़ा अधिक आर्किटेक्चर होना बेहतर है। –
यदि कोई सार्वजनिक विधि उस निजी विधि को कॉल करती है जिसे आपने "बिना किसी समस्या के" बदला है, तो क्या सार्वजनिक विधि किसी भी तरह से टूट नहीं जाएगी? यदि हां, तो कुछ भी "सुरक्षित रूप से बदलना" में वास्तव में कोई अंतर नहीं है; जो भी आप बदलते हैं उसका परीक्षण किया जाना चाहिए - इसे सार्वजनिक/निजी बनाना आपको इस मामले में कोई अतिरिक्त सुरक्षा नहीं देगा। – gented