2016-05-10 8 views
5

मैं 3 वर्गों डायन अन्य वर्ग ParentClass बुलाया वारिस है और 3 में से प्रत्येक के अंदरकॉल विधि और आकर्षित

public void DrawBackground(Graphics e, Rectangle rect) 
{ 
    e.FillRectangle(Brushes.Red, rect); 
} 

निम्नलिखित कोड है मेरी मुख्य रूप में मैं इस ParentClass PClass = new OneOfTheThreeClasses

कैसे की तरह एक चर है क्या मैं अपने फॉर्म के पेंट इवेंट से उस चर का उपयोग कर उन वर्गों की DrawBAckground विधि को कॉल कर सकता हूं?

+0

आभासी तरीकों के बारे में जानें। –

+0

क्या आपको एहसास है कि 'ग्राफिक्स' और 'आयताकार' में गुज़रने वाली दूसरी कक्षा पर ऐसी विधि को कॉल करने से न केवल कॉलिंग फॉर्म को चित्रित किया जाएगा? – adv12

+0

@ adv12 हाँ मुझे पता है कि – Adrao

उत्तर

4

ParentClass पर या तो एक सार या वर्चुअल विधि बनाएं। कुछ इस तरह:

public virtual void DrawBackground(Graphics e, Rectangle rect) 
{ 
    // do nothing 
} 

तो बच्चे कक्षाओं में, उस विधि को ओवरराइड:

public override void DrawBackground(Graphics e, Rectangle rect) 
{ 
    e.FillRectangle(Brushes.Red, rect); 
} 

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

+0

धन्यवाद, मैंने अभी एमएसडीएन की जांच की है, यह पता चला है कि वीएस में बहुत सी विधियां आभासी हैं, इसलिए उन्हें बार-बार ओवरराइड किया जा सकता है .. – Adrao

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