2013-09-23 7 views
7

मेरे पास कुछ विधियों के साथ निम्न श्रेणी है और मैं इसे किसी अन्य वर्ग की बेस क्लास के रूप में उपयोग करना चाहता हूं।सही संशोधक क्या होगा?

public class BaseClass 
{ 
    public string DoWork(string str) 
    { 
     // some codes... 
    } 

    // other methods... 
} 

मैं इस वर्ग instantiated जा करने के लिए है, लेकिन व्युत्पन्न वर्ग अभी भी अपनी आधार वर्ग के तरीकों में से मूल कार्यान्वयन का उपयोग करना चाहिए नहीं करना चाहती।

क्या यह संभव है? मेरा संशोधक क्या होना चाहिए?

+5

आपको 'abstract' की आवश्यकता है। –

+0

लेकिन अमूर्त में कोई कार्यान्वयन सही नहीं है? – yonan2236

+0

@ yonan2236 संख्या। सार कक्षाओं में ठोस तरीके और गुण हो सकते हैं। अन्यथा वे वास्तव में इंटरफेस से अलग नहीं होंगे (गैर-सार्वजनिक सदस्यों को घोषित करने के अलावा) –

उत्तर

6

चूंकि आप इस कक्षा को तत्काल नहीं करना चाहते हैं, इसे abstract कक्षा बनाएं। आप अभी भी कक्षा पर कार्यान्वयन कर सकते हैं।

टुकड़ा,

public abstract class BaseClass 
{ 
    public virtual string DoWork(string str) 
    { 
     // can have implementation here 
     // and classes that inherits can overide this method because of virtual. 
    } 

    // other methods... 
} 
+1

विधि वर्चुअल क्यों है? – yonan2236

+0

@ yonan2236 तो विधि को ओवरराइड किया जा सकता है। –

+0

ओह, तो इसका मतलब है कि व्युत्पन्न कक्षा में 'DoWork' विधि का अपना कार्यान्वयन हो सकता है? सही? – yonan2236

7

बनाओ BaseClassabstract:

public abstract class BaseClass 
{ 
    // Only available to BaseClass 
    private string _myString; 

    public string DoWork(string str) 
    { 
     // Available to everyone 
     return _myString; 
    } 

    protected void DoWorkInternal() { 
     // Only available to classes who inherit base class 
    } 
} 

इस तरह, आप BaseClass में अपना एकल कोड परिभाषित कर सकते हैं - लेकिन यह आरंभ नहीं किया जा सकता हैसीधे, इसे विरासत में प्राप्त किया जाना चाहिए।

+0

'DoWork' शायद' आभासी 'चिह्नित किया जाना चाहिए। –

+2

@ श्रीमान मुझे यकीन नहीं है। ओपी का कहना है "लेकिन व्युत्पन्न वर्ग को अभी भी अपनी बेस क्लास के तरीकों के मूल कार्यान्वयन का उपयोग करना चाहिए"। मुझे लगता है कि वह 'आभासी' नहीं चाहता है। –

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