जावा यहाँ नौसिखिया, मैं एक बुनियादी सवाल है कि आधे अन्य धागे या डॉक्स में पिछली प्रतिक्रियाएं द्वारा उत्तर दिया है, लेकिन मैं अभी भी पूरी तरह तंत्र समझ में नहीं आता है और मैं होना चाहता हूँ यकीन है कि मैं तल पर बुनियादी बातों (कोड, में सवालों को शामिल किया गया मध्य)।
असल में, मैं अगर दो MyDate वस्तुओं एक ही तिथि है की जाँच करने के बराबर () विधि अधिभावी कर रहा हूँ। मैं एक instanceof जांच अगर ओ वस्तु एक MyDate वस्तु है, तो आप एक MyDate वस्तु के लिए विशेष रूप से एक अस्थायी वस्तु डाली प्रकार o
तो आप तिथियों की तुलना करें। तुम क्यों ओ, की MyDate वर्ग के लिए अस्थायी चर डाली प्रकार जब यह पहले से ही MyDate वर्ग की है?
- आप वस्तु आप बराबर () तुलना चलाना चाहते हैं एक आसान संदर्भ के रूप में अस्थायी चर का उपयोग करें? क्योंकि आप की तुलना के रूप में बराबर () का उपयोग
MyDate.equals(MyOtherDate)
कोड में, अगर मैं एक चर को नामित नहीं है तो संदर्भ धारण करने के लिए आप करने के विभिन्न त्रुटियों (अस्थायी एक चर, प्रकार मेल नहीं खाता, आदि के रूप में हल नहीं किया जा सकता है मूल रूप से संकलक नहीं यकीन है कि जहां है देखो के लिए जब तक आप एक गुच्छा अधिक कोड लिखने)।
2 ए। अन्य धागे से कुछ प्रभाव है कि जब तक जांच करता है instanceof अगर एक उदाहरण एक वर्ग से है, यह जाँच करता है के लिए कुछ कहा आधार वर्ग है, लेकिन एक उपवर्ग जांच नहीं करता। क्योंकि आप विशेष रूप से (एक विशिष्ट वस्तु के लिए एक सामान्य वस्तु से प्रकार कास्टिंग) कि विशिष्ट वस्तु की जांच करने के संकलक कह रहे हैं आप typecasting है। नोट: यह एक संस्करण और स्वाद विशिष्ट प्रकार प्रश्न हो सकता है, मैं इसी तरह के सवाल करने के लिए विभिन्न उत्तरों देखा है।
2 बी। कास्टिंग संदर्भ, नहीं वस्तु ही बदल जाता है। तो, वस्तुओं एक ही कक्षा से कर रहे हैं, लेकिन विभिन्न उपवर्गों, नहीं होगा यह संकलन समय के बजाय, कार्यावधि में असफल। और न मैं एक ClassCastException मिलेंगे?
public boolean equals(Object o) {
if (o instanceof MyDate) {
MyDate temp = (MyDate) o;
if ((temp.day == day) && (temp.month == month) && (temp.year == year)) {
return true;
}
}
return false;
}