2012-05-18 8 views
5

मैंने पढ़ा कि इंटरफेस में कोई कन्स्ट्रक्टर नहीं है, जिसका अर्थ है कि यह सुपर श्रेणी के सुपर() को कॉल नहीं करेगा। मैंने यह भी पढ़ा है कि जावा में प्रत्येक वर्ग Objectयदि इंटरफेस में कंस्ट्रक्टर नहीं हैं, तो इंटरफ़ेस का ऑब्जेक्ट क्लास सुपर क्लास है?

एक इंटरफ़ेस के बारे में क्या है, क्या यह ऑब्जेक्ट का उप-वर्ग है? क्यूं कर?

उत्तर

5

नहीं, यह नहीं है। किसी ऑब्जेक्ट को ऑब्जेक्ट बनाने के लिए तत्काल नहीं किया जा सकता है, यह कक्षा नहीं है।

+0

क्या आपको यकीन है कि ** इंटरफ़ेस को तत्काल नहीं किया जा सकता **? तो अज्ञात वर्ग के बारे में क्या? –

+1

@Quoi: जैसा कि आपने स्वयं कहा है, अज्ञात वर्ग - कुछ इंटरफ़ेस का अज्ञात कार्यान्वयन। –

1

कोई इंटरफ़ेस ऑब्जेक्ट क्लास का उप-वर्ग नहीं है, क्योंकि इंटरफ़ेस एक वर्ग का विस्तार नहीं कर सकता है चाहे वह स्पष्ट या स्पष्ट हो।

कन्स्ट्रक्टर का कारण एक उदाहरण बनाना है, क्योंकि इंटरफ़ेस को तत्काल नहीं किया जा सकता क्योंकि वे कोई कार्यक्षमता प्रदान नहीं करते हैं, वे केवल एक अनुबंध हैं, केवल कक्षा को तत्काल चालू किया जा सकता है, इसलिए उनके पास कन्स्ट्रक्टर है।

1

एक इंटरफ़ेस विधि परिभाषाओं का एक नामित संग्रह है (कार्यान्वयन के बिना)। एक इंटरफेस में लगातार घोषणाएं भी शामिल हो सकती हैं।

इंटरफेस और कक्षा में कुछ बुनियादी अंतर है और उनमें से एक में रचनाकार नहीं हैं। असल में इंटरफ़ेस इसके लिए नहीं बनाया गया है और आप इंटरफ़ेस को तुरंत चालू नहीं कर सकते हैं लेकिन एक तरीका है कि आप अभी भी इंटरफ़ेस को तुरंत चालू कर सकते हैं।

interface Interface{ 
    abstract String fun(); 
} 

Interface interfc=new Interface() { 
    @Override 
    public String fun() { 
     return super.toString(); 
    } 
}; 

Type type=interfc.getClass(); 

यहां इंटरफ़ेस को अज्ञात वर्ग के रूप में तुरंत चालू कर दिया गया है। लेकिन फिर भी आप जावा भाषा विनिर्देश के अनुसार कन्स्ट्रक्टर नहीं रख सकते हैं। लेकिन फिर भी आप super कक्षा का उपयोग कर सकते हैं जो इस अज्ञात वर्ग के तुरंत सुपर क्लास होगा।

An anonymous class cannot have an explicitly declared constructor. 

और इसका वैकल्पिक समाधान है जो सुपर क्लास में अंतिम चर का उपयोग कर रहा है।

0

जबकि कुछ लोग इंटरफेस के बारे में सोचते हैं कि "एक-" संबंधों के बजाय "कर सकते हैं" के रूप में, मुझे लगता है कि उनके बारे में सोचने में यह और मददगार है "एक __er" या "एक __able चीज़ है"। वास्तविक दुनिया के समानता का उपयोग करने के लिए, एक पुस्तक (मृत पेड़ संस्करण), एक बाउंड पेपर पत्रिका, एक समाचार पत्र, एक प्रचार विज्ञापन फ्लायर, एक संकेत, और कागज पर एक स्क्रैप लिखा गया है, जो कुछ लिखा है, सभी "पठनीय चीजें हैं "। अगर कोई अन्य व्यक्ति को एक पुस्तक दिखाता है और पूछता है, "क्या यह एक पठनीय चीज़ है", तो जवाब यह होगा कि यह है। दूसरी ओर, अगर कोई अन्य व्यक्ति को एक पुस्तक दिखाना था और पूछें "यह क्या है?" प्रतिक्रिया "एक पठनीय चीज़" नहीं होगी, लेकिन संभवतः "एक पुस्तक", या शायद "चार्ल्स डिकेंस द्वारा उपन्यास 'ग्रेट एक्सपेक्शंस' के दूसरे अमेरिकी संस्करण की एक हार्डकवर पांचवीं प्रिंटिंग प्रति"। किसी भी प्रकार की "पठनीय चीज़" में केवल कुछ "पठनीय चीज़" होने से परे कुछ पहचान है।

इसी प्रकार जावा इंटरफेस के साथ। एक ऑब्जेक्ट इंटरफेस की मनमानी संख्या को कार्यान्वित कर सकता है, लेकिन प्रत्येक ऑब्जेक्ट में इंटरफेस के सेट के अतिरिक्त एक प्रकार होना चाहिए। ध्यान दें कि एक विधि को परिभाषित करना संभव है जो एक इंटरफ़ेस लागू करने वाले अज्ञात प्रकार की एक नई वस्तु वापस करेगा; यह किसी भी प्रकार की वस्तु को वांछित करने के बिना, "कृपया मुझे कुछ पढ़ने के लिए" प्राप्त करने के बराबर होगा। इस तरह की एक विधि वापस लौटने के लिए एक प्रकार का ऑब्जेक्ट चुन सकती है, और कॉलर को "पठनीय" दे सकती है। हालांकि, सामान्य तरीकों के विपरीत, कन्स्ट्रक्टरों को कॉलर को सटीक रूप से निर्दिष्ट करने की आवश्यकता होती है कि किस प्रकार की ऑब्जेक्ट वांछित है। केवल यह निर्दिष्ट करना कि एक वस्तु "पठनीय" पर्याप्त विनिर्देश नहीं होगी।

0

कोई इंटरफ़ेस कन्स्ट्रक्टर नहीं हो सकता है। क्योंकि इंटरफ़ेस एकाधिक विरासत का समर्थन करता है।इसका मतलब है कि यदि कक्षा दो इंटरफ़ेस का उत्तराधिकारी है तो कन्स्ट्रक्टर चेनिंग के कारण वहां अस्पष्टता होगी जिसे कन्स्ट्रक्टर क्लास कन्स्ट्रक्टर से बुलाया जाएगा।

संबंधित मुद्दे