java - Calling method that exists in child classes but not in parent class -


  सार्वजनिक वर्ग अभिभावक {....} सार्वजनिक वर्ग Child1 माता-पिता का विस्तार (.... public void foo ) {....}} सार्वजनिक वर्ग Child2 माता-पिता को विस्तारित करता है {.... public void foo () {....}}  

यहां विधि foo () < / कोड> केवल बाल कक्षाओं में मौजूद है और माता-पिता वर्ग में नहीं जोड़ा जा सकता (यहां तक ​​कि अमूर्त पद्धति भी नहीं)। इस स्थिति में जब मैं foo () विधि obj पर कॉल करना चाहता हूं, तो parent वर्ग का संदर्भ है तो मुझे intanceof का उपयोग करने की आवश्यकता है एक से अधिक अगर..कुछ के साथ मैं बचाना चाहता हूं

<पूर्व> अभिभावक obj = ... // बच्चे कक्षा obj.foo () का एक वस्तु;

संपादित करें: मुझे केवल obj के रूप में parent के प्रकार का उपयोग करने की आवश्यकता है अन्यथा मैं ओबीसी पर तरीकों को कॉल करने में सक्षम नहीं होगा जो मूल वर्ग में मौजूद है।


मेरा समाधान: जिस दृष्टिकोण से मैं सोच रहा हूं वह इंटरफ़ेस को परिभाषित करना है < कोड> फूइंटरफेस के साथ foo () विधि और सभी बाल वर्गों को इसे लागू करने दें, तब मैं बस उस इंटरफ़ेस और कॉल फू को obj डाली जा सकता हूं ) इस तरह की विधि:

  यदि (obj instanceof FooInterface) {((FooInterface obj)) .foo (); }  

क्या कोई बेहतर तरीका है? या किसी के लिए कोई सुधार?

बहुरूपता ऑब्जेक्ट संदर्भ पर लागू होता है, एक प्रकार की नहीं जब आप कॉल करते हैं

  फ़ूइंटरफेस obj = ... // बच्चे कक्षाओं में से एक ऑब्जेक्ट obj.foo ();  

बच्चे वर्ग विधि foo () कहा जाता है।


Comments

Popular posts from this blog

c# - The item with identity 'Id' already exists in the metadata collection. Parameter name: item -

sql - PostgreSQL automatically update row at specific date -

jsp - No mapping found for HTTP request with URI with annotation config Spring MVC and Jetty -