2011-12-18 22 views
10

संभव डुप्लिकेट:
Difference between object and instanceसी # में वस्तुओं और कक्षाओं के बीच क्या अंतर है?

मैं सवालों का जोड़ी:

  1. (एक अमूर्त वर्ग को छोड़कर) एक क्लास के हर उदाहरण एक वस्तु है?
  2. सार कक्षाओं को तत्काल नहीं किया जा सकता है, इसलिए वे वस्तुओं नहीं हैं?

क्या कोई मुझे उपरोक्त अवधारणाओं को बेहतर ढंग से समझने में मदद कर सकता है क्योंकि वे सी # से संबंधित हैं?

+0

1. हां (दिया गया # 2) और 2. हां। एक वक्र बॉल स्थैतिक वर्ग है जो मूल रूप से एक प्रक्रिया के जीवनकाल के लिए एक ही वस्तु है। –

+0

यह अमूर्त कक्षाओं के इंटरफेस के बराबर सोचने में मदद करता है। वे सिर्फ इंटरफेस हैं जो एक डिफ़ॉल्ट कार्यान्वयन प्रदान कर सकते हैं। –

+0

संबंधित: http://stackoverflow.com/questions/3323330/difference-between-object-and-instance और http://stackoverflow.com/questions/3686647/whats-the-best-way-to-define-the -words-class-and-object-to-someone-who-hasn –

उत्तर

24
  1. एक वस्तु एक वर्ग का एक उदाहरण है।

  2. एक वर्ग किसी ऑब्जेक्ट की परिभाषा है। यह वास्तव में एक वस्तु बन जाता है जब तक यह तत्काल नहीं है। चूंकि एक अमूर्त वर्ग को तत्काल नहीं किया जा सकता है, उस प्रकार का कोई भी वस्तु नहीं बनाया जा सकता है। ऑब्जेक्ट को बनाने के लिए एक उप वर्ग को परिभाषित करने की आवश्यकता होगी।

12
  1. हां, कक्षा का हर उदाहरण एक वस्तु है।

  2. कक्षाएं (चाहे सार या नहीं) वस्तुएं नहीं हैं। वे प्रकार हैं।

+0

यहां तक ​​कि सार कक्षाओं को तत्काल किया जा सकता है, वे अभी भी वस्तुओं नहीं होंगे। –

+0

यह ध्यान दिया जाना चाहिए कि कुछ भाषाओं में, कक्षाएं भी वस्तुएं हैं। –

+0

@ मार्को-फिसेट अच्छा यह विशेष रूप से सी # से संबंधित है, इसलिए यह सुनिश्चित न करें कि अन्य भाषाएं यहां भी प्रासंगिक हैं। – jdmdevdotnet

2

एक अमूर्त वर्ग को कभी भी तत्काल नहीं किया जा सकता है (और इसलिए कोई ऑब्जेक्ट कभी नहीं बन सकता)। यदि आप एक सार तत्व बनाते हैं जो एक सार आधार वर्ग से विरासत में मिलता है, और इसे तुरंत चालू करता है, तो इसमें अमूर्त वर्ग के गुणों के साथ-साथ अपनी संपत्ति भी होगी। एक सार आधार वर्ग बनाने के पीछे उद्देश्य कुछ कार्यक्षमताओं को लागू करने के लिए कक्षाओं को प्राप्त करने के लिए "लागू" करना है (एक इंटरफेस के समान, लेकिन काफी नहीं)।

+0

अर्थात्, एक इंटरफेस * * * * * लागू * विधियों के पास नहीं हो सकता है, लेकिन बस यही है: एक इंटरफ़ेस। – Gravity

10

कक्षा और वस्तु की अवधारणाओं के बीच अंतर क्या है, यह स्पष्ट रूप से स्पष्ट दिखाने के लिए एक आम सादृश्य है।

एक कक्षा एक नुस्खा की तरह है। एक वस्तु एक केक है। एक नुस्खा से आप कई केक बना सकते हैं। एक नुस्खा में केवल संकेत (अमूर्त होना) हो सकते हैं और अपने स्वयं के एक नुस्खा (कार्यान्वयन वर्ग) के निर्माण के लिए जगह छोड़ सकते हैं जिससे आप केक (वस्तुओं) बना सकते हैं।

तो कक्षा एक वस्तु नहीं है, यह वर्णन है कि उस वर्ग की वस्तुएं किस तरह दिखती हैं। सार कक्षाओं में इस अमूर्त वर्ग से प्राप्त कक्षाओं के कार्यान्वयन के लिए उपयोगी विधियों और अन्य जानकारी शामिल हैं। वस्तुओं को एक अमूर्त वर्ग से बनाया/तत्काल नहीं बनाया जा सकता है (क्योंकि इसकी परिभाषा पूर्ण नहीं है)।

2

कक्षा के प्रत्येक उदाहरण (एक सार वर्ग को छोड़कर) एक वस्तु है?

हां। यह "उदाहरण" की परिभाषा है।

सार कक्षाओं को तत्काल नहीं किया जा सकता है, इसलिए वे वस्तुएं नहीं हैं?

कक्षाएं उदाहरण या वस्तुओं के समान नहीं हैं। एक वस्तु एक वर्ग का एक उदाहरण है। चिड़ियाघर सिमुलेशन की कल्पना करो। एक वस्तु एक विशिष्ट शेर की तरह है, जबकि एक वर्ग शेर क्या है के विवरण की तरह है। सार कक्षाएं ऐसी चीजों का विवरण हैं जो अकेले उस वर्णन के आधार पर कुछ बनाने के लिए उचित बनाने के लिए अस्पष्ट हैं (उदाहरण के लिए "पशु")। यही कारण है कि आप उन्हें तत्काल नहीं कर सकते हैं। कार्यक्रम के लिए सीधे अनुरोध करने के लिए एक जानवर की तरह कुछ अस्पष्ट हो सकता है; इसके बजाए, कार्यक्रम केवल शेर, टाइगर, या मोंगोस जैसी अधिक विशिष्ट चीजों का अनुरोध करेगा।

6
class Cat {} // It is a cat. Just a cat. Class is a general issue. 

myCat = new Cat("red", "5kg", "likes milk", "3 years old"); // It is my cat. It is an object. It is really a cat. 

yourCat = new Cat("gary", "3kg", "likes a meal", "5 years old"); // It is your cat. Another cat. Not my cat. It is really a cat too. It is an object; 

abstract class Animal {} // Abstract class 
animal = new Animal(); // It is not correct. What is 'animal'? Cat, dog, cow? I don't know. 

class Dog : Animal {} // It is a class. It is a dog in general. 
someDog = new Dog("brown", "10 kg", "likes cats"); // It is really a dog. It is an object. 
संबंधित मुद्दे