मैंने कुछ लेखों के माध्यम से स्थिर बाध्यकारी और जावा में गतिशील बाध्यकारी के बारे में कुछ लेख पढ़े हैं। और मैं निम्नलिखित प्रश्न (मैं एक बहुत खोज की है, लेकिन इसके बारे में अभी तक नहीं मिला कोई उल्लेख है):जावा में स्थिर बाध्यकारी और गतिशील बाध्यकारी के साथ समस्याएं
उदाहरण के लिए, मैं कोड की निम्न पंक्तियाँ:
Person a = new Student(); // Student is a subclass of Person
a.speak();
हम क्या ' पहले से ही ज्ञात है कि संकलन-समय पर, संकलक जांच करेगा कि speak()
के लिए Person
में विधि परिभाषा मौजूद है या नहीं, और यदि यह मौजूद है तो इसे कॉल करें। और रन-टाइम में, यह वास्तविक वस्तु जो करने के लिए a
इशारा कर रही है की speak()
विधि कॉल करेंगे (इस मामले में वास्तविक वस्तु स्पष्ट रूप से Student
है)
तो मेरे सवाल वजह है कि यह सीधे कॉल नहीं करता speak()
कक्षा Student
संकलन समय पर विधि, लेकिन रन-टाइम तक प्रतीक्षा करें? क्या इसके पीछे कोई कारण हैं?
क्योंकि आपके सॉफ़्टवेयर को संकलित करना इसे चलाने से अलग है। –
क्योंकि * आपने * कंपाइलर को बताया कि 'ए' को' छात्र 'के बजाय' व्यक्ति 'के रूप में माना जाना चाहिए। और अनुरोध के मुकाबले कोड को अलग तरीके से क्यों संकलित करना चाहिए? आप उस अलग रणनीति के लिए क्या लाभ उठा रहे हैं? – Holger