difference in C# and PHP OOP -


मेरे पास एक सामान्य OOP प्रश्न है

अगर मेरे पास सी # में निम्न वर्ग हैं

  वर्ग अभिभावक {public string val = "parent"; सार्वजनिक शून्य getValue () {Console.WriteLine (this.val); }} वर्ग बच्चे: माता-पिता {सार्वजनिक स्ट्रिंग वैल = "बाल"; } बाल बच्चे = नया बच्चा (); child.getValue ();  

कोड आउटपुट 'पेरेंट' जैसा कि मैं समझता हूं क्योंकि यह माता-पिता को इंगित करता है, ठीक है?

अगर मैं PHP5 में ऐसा करता हूं:

  class ParentClass {public $ val = 'parent'; सार्वजनिक समारोह foo () {echo $ this- & gt; val; }} क्लास चाइल्डक्लास ParentClass को बढ़ाता है {सार्वजनिक $ val = 'child'; } $ A = नया बाल क्लास (); $ एक करने के लिए & gt; foo ();  

इसका परिणाम 'बच्चा' होगा।

यद्यपि मैं

  सार्वजनिक $ val = 'parent' बदलूंगा;  

से

  निजी $ val = 'parent';  

तब PHP 'माता-पिता' भी दिखाएगा सी # हमेशा पब्लिक और निजी एक्सेस मॉडिफायर दोनों के साथ 'पेरेंट' लौटते हैं।

क्या इसके लिए कोई कारण है? और कौन सा व्यवहार सही है?

पढ़ने के लिए कोई भी उपयोगी लिंक अत्यधिक सराहना की जाएगी!

धन्यवाद!

आपके बताए गए परिदृश्यों में कोई सही या गलत व्यवहार नहीं है। भाषा डिज़ाइनर ने उन्हें क्या किया है।

कारण आपको सी # में अपेक्षित व्यवहार नहीं मिलता है, क्योंकि गेटिवैल को जनक श्रेणी में बुलाया जा रहा है, जहां "यह" का अर्थ मूल अभिभावक है।

सही व्यवहार पाने के लिए, आप override कीवर्ड के साथ, बाल वर्ग में वही तरीका शामिल कर सकते हैं: सार्वजनिक वर्ग बच्चे { सार्वजनिक स्ट्रिंग val = "बाल"; सार्वजनिक ओवरराइड शून्य GetValue () {Console.WriteLine (val); }}

... जो कंसोल में "बाल" मुद्रित करेगा।


Comments

Popular posts from this blog

SQL/PHP: Table design question -

c# - PInvoke of NetUserAdd returns 24 -

NHibernate Passing Session to the Repository -