2011-02-09 9 views
6

मैं एक परियोजना के लिए abstract करने के लिए अपने आधार वर्ग बदल गया है और अब मैं निम्न त्रुटि प्राप्त कर रहा हूँ:सी # त्रुटि संदेश "अमूर्त वर्ग या इंटरफ़ेस का एक उदाहरण नहीं बना सकता"

Cannot create an instance of the abstract class or interface

मैं त्रुटि मिल रही है क्योंकि abstract कक्षा के नए उदाहरण का नामकरण करने की अनुमति नहीं है?

newPlane = new Airplane_Abstract(name, position); 
+1

आपने सही ढंग से अनुमान लगाया है। –

+1

फ्रेमवर्क दिशानिर्देश ढांचे दिशानिर्देश ढांचे दिशानिर्देश ढांचे दिशानिर्देश – Will

+2

जब आप वापस जाते हैं और अमूर्त कक्षाओं के बारे में कुछ पढ़ते हैं, तो आप अपने माथे को स्मैक करेंगे और "डुह" जाएंगे। http://msdn.microsoft.com/en-us/library/sf985hc5(v=vs.71).aspx (पहला बुलेट बिंदु) –

उत्तर

18

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

+0

बेशक आप एक कंक्रीट वर्ग का एक उदाहरण बनाते हैं जो 'अमूर्त' वर्ग को विरासत में लेता है, और इस तरह के एक उदाहरण को सार वर्ग का एक उदाहरण भी कहा जा सकता है। –

+0

@ जेप्पेस्टिगनिल्सन: एक अमूर्त वर्ग एक वर्ग है जो अमूर्त तरीकों की घोषणा करता है। आप एक अमूर्त वर्ग का उदाहरण नहीं बना सकते हैं (संकलक आपको बताएगा!) बेशक आप * गैर-सारणी उप-वर्गों के उदाहरण बना सकते हैं, लेकिन यह सवाल नहीं है (जिसे लगभग छह साल पहले पूछा गया था ...) अापका नजरिया क्या है? –

+0

यह सिर्फ एक शब्दावली टिप्पणी है। बहुत से लोग उप-वर्ग के उदाहरण को बेस क्लास के उदाहरण भी कहते हैं। उदाहरण के रूप में देखें [यह उत्तर एरिक लिपर्ट द्वारा किसी अन्य धागे में] (http: // stackoverflow।com/एक/5602284/1,336,654)। आपका जवाब बिल्कुल सही है, मैं बस कहना चाहता था कि यह अन्य शब्दावली है जो आम है। –

5

आप एक अमूर्त वर्ग का उदाहरण नहीं बना सकते हैं। यही अमूर्त का अर्थ है।

13

मैंने आपके पहले प्रश्न को देखा, जिसमें आपने "शुद्ध वर्चुअल" (abstract सी # में) के अर्थ के बारे में पूछा था।

कारण आप एक abstract वर्ग का दृष्टांत नहीं कर सकता है कि यह संभव है, abstract सदस्य हैं कोई कार्यान्वयन साथ। तो कहते हैं कि अपने वर्ग इस तरह दिखता है:

abstract class Airplane_Abstract 
{ 
    public abstract int GetSomeInteger(); 
} 
फिर

, तो आप इस तरह कोड लिख सकता है आप यह सोचते हैं इनमें से किसी एक का दृष्टांत सकता है:

var airplane = new Airplane_Abstract(); 

// What would this be? 
int integer = airplane.GetSomeInteger(); 

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

उदाहरण के लिए Shape के बारे में सोचें। यह किसी चीज का एक बहुत ही आम उदाहरण है जो एक अमूर्त वर्ग के रूप में समझ में आता है। आप वास्तव में को तुरंतShape पर तुरंत चालू नहीं कर सकते हैं, क्या आप? ("एक आकृति बनाएं।" "किस तरह का आकार?" "कोई दयालु नहीं। सिर्फ एक अमूर्त आकार।" वास्तव में काम नहीं करता है, है ना?)

+0

महाकाव्य स्पष्टीकरण महोदय। : डी –

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