2012-02-03 12 views
10

कंपाइलर अब तक इसे ध्यान में नहीं रखता है, लेकिन मैं सिर्फ यह जांचना चाहता हूं कि मैं अपने सार वर्ग में कुछ तरीकों को लागू करके किसी भी तरह विफलता के लिए खुद को स्थापित कर रहा हूं या नहीं।क्या सार कक्षाएं सी # में कार्यान्वयन कर सकती हैं?

उत्तर

14

एक अमूर्त वर्ग में आमतौर पर एक या अधिक सार विधि होती है। तो हाँ यह कुछ विधि लागू हो सकती है। लक्ष्य यह है कि उपयोगकर्ता को ऑब्जेक्ट काम करने के लिए इन तरीकों को लागू करने के लिए मजबूर करना है। कभी-कभी अमूर्त वर्गों का उपयोग कुछ इंटरफेस के 'आधार' कार्यान्वयन के लिए किया जाता है, जिससे अंतिम उपयोगकर्ता केवल मुख्य तरीकों को निर्दिष्ट करने के लिए छोड़ देता है। आप बिना किसी अमूर्त विधि के एक अमूर्त वर्ग भी प्राप्त कर सकते हैं: इस मामले में आप जोर दे रहे हैं कि इसका उपयोग करने के लिए आपको उस वर्ग से प्राप्त होना चाहिए।

+5

सार तत्वों के बिना अमूर्त वर्ग बनाना संभव है, बस वर्ग को सार के रूप में चिह्नित करना ... –

+2

अमूर्त वर्ग का अर्थ है कि इसे तत्काल होने के लिए विरासत में होना चाहिए। इसका मतलब यह नहीं है कि इसमें सारल विधियां होनी चाहिए क्योंकि किरिल पोलिशचुक ने नोट किया था। – ken2k

+0

@ किरीलपोलिशचुक धन्यवाद क्रिल, मैंने कभी नहीं देखा कि, मैंने जवाब को सही किया। –

1

हां। abstract कक्षा को तत्काल नहीं किया जा सकता है (आपको कक्षा को तत्काल करना होगा जो आपके अमूर्त वर्ग से प्राप्त होता है), लेकिन इसमें कार्यान्वयन हो सकते हैं।

1

कुछ तरीकों को लागू करने और दूसरों को अमूर्त छोड़ने के लिए बिल्कुल ठीक है।

यदि सभी विधियों को सार होना था, तो आप इसके लिए एक इंटरफ़ेस भी उपयोग कर सकते हैं।

0

यह ठीक है और अनुमति है, abstract class में कम से कम एक सदस्य (विधि/संपत्ति) लागू नहीं है, इसलिए इसे तुरंत चालू नहीं किया जा सकता है।

interface को pure abstract class भी कहा जाता है जिसका अर्थ है कि यह 100% सार है, इसलिए आपको कोई कार्यान्वयन निर्दिष्ट करने की अनुमति नहीं है।

ध्यान रखें कि कई ठोस लेखों से कभी ठोस वर्ग प्राप्त करने के बारे में बहुत सारे लेख और राय नहीं हैं, बल्कि केवल अमूर्त लोगों से ... कम से कम यह कुछ साल पहले सी ++ में प्रवृत्ति थी, फिर मैं चले गए सी # पक्ष में, और अधिक काम करना शुरू कर दिया और उन अच्छे लेखों को पढ़ने के लिए कोई समय नहीं था ... :)

+3

आप सी # में किसी भी अमूर्त सदस्य के बिना एक अमूर्त वर्ग प्राप्त कर सकते हैं –

6

अमूर्त वर्गों में कुछ कार्यान्वयन करना आम बात है।

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

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