java - Passing derived class object which expects a base class object -


  सार्वजनिक सार वर्ग AbstractClass {सार्वजनिक सार शून्य सार abstractclassMethod (); } पब्लिक क्लास DeriveClass AbstractClass विस्तारित {@Override सार्वजनिक शून्य अब्बरक्लस विधि () {// टू-ऑटो ऑब्जेक्ट स्ट्रिंग}} सार्वजनिक इंटरफ़ेस इंटरफ़ेस ऑब्जेक्ट {सार्वजनिक शून्य इंटरफ़ेस ऑब्जेक्ट मोड (एब्स्ट्रक्चर क्लास ऑब्ब्रास्क्लैस); } सार्वजनिक वर्ग का परीक्षणअभ्यासपरम लागू करता है इंटरफेसऑब्जेक्ट {@Override सार्वजनिक शून्य इंटरफ़ेस ऑब्जेक्ट मोड (एब्स्ट्रकक्लैस ओअब्ब्सक्लास) {// TODO ऑटो-जनरेट किया गया विधि स्टब}} सार्वजनिक वर्ग टेस्ट डीरिव्डपेम का कार्यान्वयन इंटरफ़ेस ऑब्जेक्ट {@ ओवरराइड सार्वजनिक शून्य इंटरफ़ेस ऑब्जेक्ट मोड (DerivedClass oDerivedClass) {// TODO ऑटो-जनरेट किया गया विधि Stub}}   

टेस्ट डेरिव्ड पैरा वर्ग को संकलित करते समय मुझे त्रुटि हो रही है I क्या कोई इस के पीछे कारण की व्याख्या कर सकता है? अधिक विशेष रूप से, सवाल यह है कि क्यों कोई विधि एक ऐसे बच्चे के प्रकार पैरामीटर को स्वीकार नहीं कर सकती है जो एक आधार प्रकार की अपेक्षा कर रहा है? धन्यवाद!

इन में TestDerivedParam विधि

  सार्वजनिक शून्य इंटरफ़ेस ऑब्जेक्ट मोड (DerivedClass oDerivedClass) {  

समान नहीं है

  सार्वजनिक शून्य इंटरफ़ेस ऑब्जेक्टमॉइज (एब्स्ट्रक्लक्सास ऑब्ब्रास्क्लैस);   

में इंटरफ़ेस ऑब्जेक्ट

आप @ ओवरराइड एनोटेशन का उपयोग कर रहे हैं लेकिन उसी विधि हस्ताक्षर का उपयोग नहीं कर रहे हैं


अधिक विशेष रूप से, सवाल यह है कि क्यों कोई विधि एक बाल प्रकार पैरामीटर स्वीकार नहीं कर सकता है जो कि आधार प्रकार की अपेक्षा कर रहा है?

नीचे दिए गए उदाहरण देखें:

  सार्वजनिक वर्ग के फल {} सार्वजनिक वर्ग सेब फल का विस्तार करता है {} सार्वजनिक वर्ग के बने फल {}  < / <> कोड  और  फल  दोनों  Apple  है लेकिन  Apple  नहीं है  केले  और  केले  नहीं है  Apple । इसलिए, आप  केले  की उम्मीद कर रहे किसी को  केले  नहीं दे सकते हैं, लेकिन यह या तो एक  केले  या < कोड> एप्पल  किसी ऐसे व्यक्ति को जो सिर्फ  फल  की अपेक्षा कर रहा है।  
  सार्वजनिक शून्य विधि (फल फल) {   

के समान हस्ताक्षर नहीं है

  सार्वजनिक शून्य विधि (ऐप्पल सेब) {  

क्योंकि, अगर यह तो इसका मतलब होगा कि निम्न में एक ही हस्ताक्षर ऊपर के रूप में है

  सार्वजनिक शून्य विधि (केला केला) {  

और हस्ताक्षर समय के साथ मेल खाना चाहिए अधिलेखित (कार्यान्वयन) एक विधि।

Comments