मुझे समझ नहीं आता क्यों यह जावा में काम करता है:ऑब्जेक्ट.toString() विभिन्न अंतर्निहित प्रकारों के लिए कैसे काम करता है?
अगर मैं एक वस्तु में एक पूर्णांक वस्तु, उदाहरण है:
Object myIntObj = new Integer(5);
अब अगर मैं करता हूँ:
System.out.println(myIntObj);
उत्पादन है: 5
अब मैं इंटीगर क्लास को टॉस्ट्रिंग विधि का एक अंडाकार है लेकिन इस मामले में अलग है (मुझे लगता है)। बहुरूपता के लिए, यदि मेरे पास "पिता परिवर्तनीय" में "बाल वस्तु" है, तो वस्तु अपने असली प्रकार को नहीं बदलती है (इस मामले में इंटीजर) लेकिन ... यह (ऑब्जेक्ट वेरिएबल में) विधि का उपयोग कर सकती है वस्तु वर्ग की, तो क्यों करता है, तो मैं लिखने:
System.out.println(myIntObj);
मैं सीधे नंबर 5 और नहीं इस वस्तु के संदर्भ देख सकते हैं? क्योंकि डिफ़ॉल्ट रूप से ऑब्जेक्ट क्लास में ToString विधि ऑब्जेक्ट के संदर्भ की केवल एक स्ट्रिंग लौटाती है।
की तरह:
Object currentPlayer = new Player();
System.out.println(currentPlayer);
इस मामले में उत्पादन प्लेयर के संदर्भ है objecet क्योंकि वस्तु वर्ग में toString विधि कहा जाता है।
तो पहले क्यों उदाहरण में मुझे संदर्भ नहीं दिखाई देता है लेकिन सीधे संख्या? तर्क से, बहुरूपता के नियम कहते हैं कि: यदि आपके पास "पिता" चर में "बच्चा" ऑब्जेक्ट है, तो यह ऑब्जेक्ट, अंदर, रीमैनिस करता है लेकिन उसे ऑब्जेक्ट की आबादी की तरह उपयोग किया जाता है, इसलिए वह बस उपयोग कर सकता है क्लास ऑब्जेक्ट और इसलिए ऑब्जेक्ट की विधि, इसलिए वास्तव में अजीब बात है कि मुझे संदर्भ नहीं दिखाई देता है लेकिन सीधे संख्या।
मुझे आशा है कि आप समझेंगे कि मेरा क्या मतलब है।
'प्लेयर 'वर्ग के लिए' toString() 'परिभाषित किया गया है? –
बस एक टिप्पणी। जब आप किसी ऑब्जेक्ट को कंसोल पर आउटपुट करते हैं तो आप जो वर्ण देखते हैं वह हैशकोड के रूप में संदर्भ नहीं है। –