C++ Templates & Inheritance in Java -


मेरे पास सी क्लास में सी ++ है

  ParentClass {वर्चुअल इंट मैमथि (); } क्लास मौजूदा एक: ParentClass {...} मौजूदा मौजूदा दो: ParentClass {...}  

अब मैं एक ऐसा क्लास बनाना चाहूंगा जो मौजूदा वर्गों में से किसी एक को बढ़ा सकता है और एक जोड़े को ओवरराइड कर सकता है

सी ++ में यह निम्न का उपयोग करके किया जाता है:

  टेम्पलेट & lt; क्लास बेसटेम्पलेट & gt; वर्ग MyClass: सार्वजनिक बेसटैप्लेट {int MyMethod () {DoSomething (); रिटर्न बेस टेम्प्लेट :: MyMethod (); }}  

यह कैसे जावा में किया जाता है?

अब तक मेरे पास

  सार्वजनिक सार वर्ग ParentClass {सार्वजनिक सार इंट MyMethod (); } पब्लिक क्लास ExistingOne ParentClass को विस्तारित करता है {...} सार्वजनिक वर्ग मौजूदा बॉटलिंग ParentClass {...} सार्वजनिक वर्ग MyClass & lt; T ParentClass को बढ़ाता है & gt; {सार्वजनिक इंट मायमथि () {डूसोमिंग ()) वापसी T.MyMethod (); // MyMethod स्थिर रूप से परिभाषित होना चाहिए? }}  

ओह, और अंत में, मैं "मौजूदा" या मूल वर्ग को संशोधित नहीं कर सकता।

क्या यह सही दृष्टिकोण है? कैसे मैं स्थिर आवश्यकता का समाधान कर सकता हूं?

सी ++ क्लास परिभाषा में, MyClass बेसटैप्लेट को बढ़ाता है। जावा उदाहरण में, MyClass विस्तार नहीं करता है ParentClass , इस प्रकार अपेक्षित समस्या हो रही है।

जावा में, बस परिभाषा को इसमें बदलें:

  पब्लिक क्लास मायक्लास & lt; टी पैरेन्ट क्लास का विस्तार & gt; ParentClass को विस्तारित करता है {@ ओवरराइड पब्लिक इंट मायमथ्यू () {डूसोमिंग ()); वापसी सुपर.मेयमथ (); }}  

चूंकि MyMethod में सार है ParentClass , यह एक कंपाइलर त्रुटि देता है इसके बजाय, आपको ParentClass के एक उदाहरण से MyMethod को कॉल करने की आवश्यकता होगी। यह एक फ़ील्ड T t अंदर MyClass :

  सार्वजनिक वर्ग MyClass & lt; T के द्वारा तय किया जा सकता है ParentClass & gt; ParentClass {टी टी; सार्वजनिक MyClass (टी टी) {this.t = टी; } @ ओवरराइड पब्लिक इंट मायमथ्यू () {डूसोमिंग (); वापसी t.MyMethod (); }}  

अन्यथा, जेनेरिक का उपयोग करके और ParentClass का विस्तार करने पर यहां कोई अर्थ नहीं होगा।


Comments

Popular posts from this blog

import - Python ImportError: No module named wmi -

Editing Python Class in Shell and SQLAlchemy -

c# - MySQL Parameterized Select Query joining tables issue -