2012-08-16 19 views
7

मैंने पढ़ा है कि जावा कक्षाएं कक्षा Class के उदाहरण हैं। लेकिन अब, मेरे कंप्यूटर विज्ञान शिक्षक कहते हैं कि जावा कक्षाएं वस्तुएं नहीं हैं।जावा कक्षाएं ऑब्जेक्ट्स हैं?

कौन सा सच है?

+0

जब आपने उससे पूछा तो उसने आपको क्या कारण दिया? – EJP

+0

@EJP उन्होंने एक वर्ग के बारे में कुछ कहा जो एक इंटरफेस है, हालांकि मुझे पूरी बात याद नहीं है। – itdoesntwork

+0

जावा क्लास वास्तव में वस्तुएं हैं, भले ही एक विशेष प्रकार की वस्तु। उदाहरण के लिए, आप किसी दिए गए वर्ग 'SomeClass' के कई उदाहरण प्राप्त कर सकते हैं: बस एक नया' क्लासलोडर 'बनाएं और फिर "SomeClass" लोड करें; आपको एक ही संकलन-समय वर्ग के लिए एक अलग उदाहरण मिलता है, संभावित रूप से विभिन्न विधि कार्यान्वयन के साथ। –

उत्तर

15

जावा क्लास एक ऑब्जेक्ट नहीं है।

हालांकि, हर जावा वर्ग Class वर्ग यह वर्णन का एक उदाहरण है।
वे उदाहरण वस्तुएं हैं।

+0

मुझे लगता है कि यह "जावा क्लास" से आपका मतलब है। "कक्षा" की परिभाषा एक वस्तु नहीं है? इसमें कक्षा घोषणा के साथ स्रोत कोड? –

+0

तो कक्षा 'कक्षा' का उदाहरण 'वर्ग' कीवर्ड के साथ बनाए गए वर्ग के समान नहीं है। समझ गया। – itdoesntwork

+0

@ मैटबॉल: एक वर्ग एक प्रकार है, वस्तु नहीं। – SLaks

0

हर जावा वर्ग, यहां तक ​​कि java.lang.Classjava.lang.Object से उतरता है।

संपादित करें:

शब्दों थोड़ा अस्पष्ट है। जावा कक्षाओं के उदाहरण निश्चित रूप से वस्तुओं हैं। खुद के वर्ग, वास्तव में वस्तुओं को नहीं माना जा सकता है, क्योंकि कक्षा "ब्लूप्रिंट" को छोड़कर स्मृति में कुछ भी मौजूद नहीं है।

+0

कक्षा वस्तुओं स्मृति में मौजूद हैं। Object.getClass() के परिणाम पर विचार करें। – EJP

+0

@EJP सुनिश्चित नहीं है कि आपका बिंदु क्या है। getClass() केवल तभी काम करता है जब आपके पास उस वर्ग का उदाहरण हो, हाँ। मैंने कभी नहीं कहा। मेरा मुद्दा तब तक है जब तक आपके पास कोई उदाहरण न हो, स्मृति में कुछ भी नहीं है, केवल जेवीएम (ब्लूप्रिंट्स) में कक्षाओं का मैपिंग है। – jn1kk

+0

@EJP मुझे यह मूर्खतापूर्ण लगता है कि हम बहस कर रहे हैं और अन्य लोगों के काल्पनिक इंटरनेट अंक निकाल रहे हैं क्योंकि सवाल स्वयं अस्पष्ट है। मुझे यह और भी मूर्खतापूर्ण लगता है कि मैं इस सवाल का जवाब देने की भी कोशिश कर रहा हूं। – jn1kk

1

वर्ग (अपने कोड, या अपने .class फ़ाइलों में भी संकलित कोड) ऑब्जेक्ट नहीं है। जब तक आप उस वर्ग को तुरंत चालू नहीं करते हैं तब तक आपके पास कोई ऑब्जेक्ट नहीं होता है।

उदाहरण के लिए, Java.lang.String एक वर्ग है। String s = new String("Hello world"); प्रकार स्ट्रिंग के किसी ऑब्जेक्ट को परिभाषित करता है। यह आपके प्रोफेसर द्वारा भेदभाव हो सकता है।

+0

फिर, "कक्षा" शब्द की परिभाषा यहां मायने रखती है। –

+0

सहमत हैं, यही कारण है कि मैं निर्दिष्ट करता हूं कि मेरा उत्तर 'वर्ग' –

3

जावा क्लासेस ऑब्जेक्ट्स नहीं हैं, वे एक अमूर्त हैं।

हालांकि, प्रत्येक जावा वर्ग java.lang.Class वर्ग है कि यह प्रतिनिधित्व करता है एक इसी उदाहरण है। वह प्रतिनिधित्व एक ऑब्जेक्ट है। लेकिन आपको वास्तविक चीज़ के लिए प्रतिनिधित्व गलती नहीं करनी चाहिए।

रिश्ते संगीत और शीट संगीत के बीच कुछ हद तक समान है। हालांकि लिखित नोटेशन संगीत का प्रतिनिधित्व करता है, यह स्वयं संगीत नहीं है।

अंतर शायद ही कभी व्यवहार में मायने रखती है, हालांकि, इतने लंबे समय तुम्हें पता है के रूप में आप और java.lang.Class वस्तुओं के साथ ऐसा नहीं कर सकते कर सकते हैं।

+0

धन्यवाद के रूप में संदर्भित करता है, जो इसे साफ़ करता है। संपादित करें: मुझे लगता है कि हर भाषा रूबी के रूप में सरल थी :) – itdoesntwork

+0

हालांकि तरीकों से रूबी जावा से बहुत अधिक जटिल है। – biziclop

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