آموزش سي شارپ - قسمت بيست و يكم

Method Hiding in CSharp

پس بررسي مفهوم overriding‌ خوب است كه كمي در رابطه با مفهوم Hiding‌ هم صحبت كنيم. در واقعا Hiding‌ دوباره نويسي يك متد است كه قبلا در كلاس پدر نوشته شده. اما نكته اي كه وجود دارد اين است كه در Hiding‌ كامپايلر سي شارپ با توجه به نوع Reference‌ شما متد را اجرا مي كند.
اگر مثال آخرين پست را بررسي كنيم متوجه مي شويم كه در آن مثال ما يك ليستي داشتيم از Emp ها (يك آرايه از Emp) كه در حقيقت اشيايي از MonthlyEmp‌ و HourlyEmp‌ را داخلشان قرار مي داديم. در واقع ما اشيايي از جنس كلاس هاي فزرند داشتيم اما به Reference‌هايي از جنس كلاس هاي پدر. نكته حائز اهميت اين است كه وقتي روي اين اشياء‌ متد ShowInfo‌ را فراخواني مي كرديم. با اينكه ديد (Reference) ما به اشياء‌ از نوع Emp بود ولي Salary را باتوجه به ماهيت اشياء (چيزي كه با آن new‌شده بودند)‌فراخواني مي كرد و به نوع Reference‌ ما اهميت نمي داد. با استفاده از همين خاصيت ما Polymorphism را در مثال قبل پياده سازي كرديم.
Hiding در واقع نقطه مقابل Overriding است. به اين ترتيب كه شما بدون توجه به ماهيت شيء (چيزي كه new شده است)‌و صرفا با توجه به نوع Reference پياده سازي مربوطه را فرخواني مي كنين.

در مثال زير من يك كلاس به نام Person‌ دارم كه متدي به نام Print را پياده سازي كرده است.
يك كلاس ديگر به نام Student از كلاس Person‌ به ارث رفته و باز هم متد Print را پياده سازي كرده است. دقت بفرمائيد كه در Hiding هنگام پياده سازي مجدد از كلمه كليدي new استفاده خواهيم كرد.



پس در صورتيكه من يك شيء از جنس Student بسازم ولي ديدم را به Person‌ محدود كنم. وقتي متد Print را فراخواني مي كنم پياده سازي كه در كلاس Person وجود دارد فراخواني مي شود. همانطور كه گفتيم در Hiding كامپايلر با توجه به Reference‌ ما متد مورد نظر را فراخواني مي كند و به ماهيت شيء توجهي نمي كند.



بارگزاري مثال Hiding


ادامه دارد ...

روز معلم

در بسیاری از كشور هاي دنيا يك روز را به عنوان روز معلم نام گذاري مي كنند. پنج شنبه اي كه گذشت , 12 ارديبهشت در ايران روز معلم نام گذاري شده. معلم معمولا به كسي خطاب ميشه كه به چيزي رو به كسي ياد ميده و شما از اون چيزهايي رو ياد مي گيرين كه تا حالا نمي دونستين اين مسئله به خودي خود آنقدر مهم هست كه يك ارزشي براي مقام معلم در نظر گرفته شود. به نظرم رسيد كه با نوشتن يك پست من هم گوشه اي از زحمات استاتيدي كه براي من زحمت كشيدن و سعي كردن گوشه اي از اطلاعاتشون رو در اختيار من قرار بدند تشكر كنم و به همه معلمين و اساتيد گرامي اين روز رو تبريك بگم و خوشحالم كه بگم هنوزم كه هنوزه به شاگردیشون افتخار مي كنم و امیدوارم که هرجایی هستند خوش و خرم و سلامت باشند.