تور لحظه آخری
امروز : یکشنبه ، 30 دی 1403    احادیث و روایات:  امام صادق (ع):نصيحت و خيرخواهى از حسود محال است.
سرگرمی سبک زندگی سینما و تلویزیون فرهنگ و هنر پزشکی و سلامت اجتماع و خانواده تصویری دین و اندیشه ورزش اقتصادی سیاسی حوادث علم و فناوری سایتهای دانلود گوناگون شرکت ها

تبلیغات

تبلیغات متنی

سایبان ماشین

دزدگیر منزل

اجاره سند در شیراز

armanekasbokar

armanetejarat

Future Innovate Tech

پی جو مشاغل برتر شیراز

خرید یخچال خارجی

واردات از چین

حمية السكري النوع الثاني

ناب مووی

دانلود فیلم

بانک کتاب

دریافت دیه موتورسیکلت از بیمه

طراحی سایت تهران سایت

irspeedy

درج اگهی ویژه

تعمیرات مک بوک

دانلود فیلم هندی

قیمت فرش

درب فریم لس

خرید بلیط هواپیما

بلیط اتوبوس پایانه

تعمیرات پکیج کرج

خرید از چین

خرید از چین

تجهیزات کافی شاپ

خرید سرور اچ پی ماهان شبکه

کاشت ابرو طبیعی و‌ سریع

قیمت بالابر هیدرولیکی

قیمت بالابر هیدرولیکی

قیمت بالابر هیدرولیکی

لوله و اتصالات آذین

قرص گلوریا

نمایندگی دوو در کرج

دوره آموزش باریستا

مهاجرت به آلمان

بورس کارتریج پرینتر در تهران

تشریفات روناک

نوار اخطار زرد رنگ

ثبت شرکت فوری

خودارزیابی چیست

فروشگاه مخازن پلی اتیلن

کلینیک زخم تهران

کاشت ابرو طبیعی

پارتیشن شیشه ای اداری

رزرو هتل خارجی

تولید کننده تخت زیبایی

مشاوره تخصصی تولید محتوا

سی پی کالاف

دوره باریستا فنی حرفه ای

چاکرا

استند تسلیت

تور بالی نوروز 1404

سوالات لو رفته آیین نامه اصلی

کلینیک دندانپزشکی سعادت آباد

پی ال سی زیمنس

دکتر علی پرند فوق تخصص جراحی پلاستیک

تجهیزات و دستگاه های کلینیک زیبایی

تعمیر سرووموتور

تحصیل پزشکی در چین

مجله سلامت و پزشکی

تریلی چادری

خرید یوسی

ساندویچ پانل

ویزای ایتالیا

مهاجرت به استرالیا

میز کنفرانس

تعمیرگاه هیوندای

تعمیرگاه هیوندای

تعمیرگاه هیوندای

اوزمپیک چیست

قیمت ورق سیاه

چاپ جزوه ارزان قیمت

 






آمار وبسایت

 تعداد کل بازدیدها : 1855071013




هواشناسی

نرخ طلا سکه و  ارز

قیمت خودرو

فال حافظ

تعبیر خواب

فال انبیاء

متن قرآن



اضافه به علاقمنديها ارسال اين مطلب به دوستان آرشيو تمام مطالب
archive  refresh

ارث خاص


واضح آرشیو وب فارسی:سایت ریسک: View Full Version : ارث خاص dogtag27-03-2009, 08:54 PMسلام. من مثلاً این رو دارم: !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! ok؟ حالا این ارور میده. کلاس a رو چجوری تعریف کنم که کلاس b بتونه اون رو به ارث ببره ولی بیرون از این namespace کسی نتونه به ارث ببرش؟ dogtag28-03-2009, 01:56 PMسلام. یکی دیگه! این رو ببینید: !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! می خوام هر کسی بتونه کلاس a من رو به ارث ببره ولی نتونه کلاس b رو به ارث ببره. c باید قابلیت override شدن داشته باشه ولی d نه. وقتی که طرف d رو از کلاس a صدا می زنه، همونطور که مشخصه باید e از کلاس b صدا زده بشه و (یه سری کار روش انجام بده و) اون هم c رو از کلاس a صدا بزنه. هر کس این رو بنویسه جایزه داره. راستیتش می خوام یه dll درست کنم که ملت بتونن از یه سری از متد ها و کلاس هاش استفاده کنند (با به ارث بردنش) در حالی که بقیه شون کاملاً داخلی باشن و طرف از وجودشون مطلع نشه. --- نیما جان اگر دیدی و بلدی، بگو! [این یه دفعه رو بپیچون بازی در نیار :دی] M E H D I29-03-2009, 02:42 AMسلام. من مثلاً این رو دارم: !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! ok؟ حالا این ارور میده. کلاس a رو چجوری تعریف کنم که کلاس b بتونه اون رو به ارث ببره ولی بیرون از این namespace کسی نتونه به ارث ببرش؟ این به خاطر این هست که کلاس b که از a ارث برده، بیشتر از پدرش دسترسی دارن بهش. یعنی پدرش به خاطر این که هیچ modifier ی نذاشتین براش، به صورت private در نظر گرفته میشه اما b چون public هست، بیشتر از a دسترسی بهش وجود داره. حالا اگه شما می خواین که از ش نشه بیرون از این namespace ارث بری بشه می تونین از دسترسیinternal براش استفاده کنین اما باز هم نمی تونین b رو public تعریف کنین. b هم باید internal، Protected یا private باشه. سلام. یکی دیگه! این رو ببینید: !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! می خوام هر کسی بتونه کلاس a من رو به ارث ببره ولی نتونه کلاس b رو به ارث ببره. c باید قابلیت override شدن داشته باشه ولی d نه. وقتی که طرف d رو از کلاس a صدا می زنه، همونطور که مشخصه باید e از کلاس b صدا زده بشه و (یه سری کار روش انجام بده و) اون هم c رو از کلاس a صدا بزنه. هر کس این رو بنویسه جایزه داره. راستیتش می خوام یه dll درست کنم که ملت بتونن از یه سری از متد ها و کلاس هاش استفاده کنند (با به ارث بردنش) در حالی که بقیه شون کاملاً داخلی باشن و طرف از وجودشون مطلع نشه. --- نیما جان اگر دیدی و بلدی، بگو! [این یه دفعه رو بپیچون بازی در نیار :دی] خوب یکی یکی از اول: کلاس a رو باید public تعریف کنین و کلاس b رو به صورت sealed دومی: متد c رو باید virtual تعریف کنین و متد d رو به صورت sealed سومی: این حالت که شما نوشتین برای فراخوانی متدهای غیراستاتیک که نمیشه! یعنی اگه بخواین یه متد رو با اسم کلاس صدا کنین حتما باید اون متد توی کلاس به صورت static تعریف بشه. اگه نخواین static باشن، باید یه نوع از کلاس مثلا a رو new کنین و بعد متدهایی که میخواین دسترسی بهشون داشته باشین رو public تعریف کنین. سوال آخر هم که جایزه داره:31:: روی solution راست کلیک کنین و برین به properties ش. توی همون قسمت اول که application هست نوشته output type . از اونجا class library رو انتخاب کنین به جای windows application یا console application . همین : دی موفق باشین:46: _H2_29-03-2009, 02:26 PMسلام ضمن تایید توضیحات کاربر MEHDI لازم دیدم در جهت کمک بیشتر، کمی توضیح و کدهای مربوطه را هم قرار دهم. حتماً میدانید که در دات نت چهار عبارت مشخص کننده محدوده دید داریم: !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! پیشنهاد میکنم در اول تعریف هر چیزی (class, struc, enum, delegate ... field, property, method ...) صراحتاً حوزه دید را با کلمات کلیدی فوق مشخص کنید. در خصوص کلمات کلیدی وراثتی هم اینها را در اختیار دارید: !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! طبیعتاً همه سوالات شما با تلفیقی از کلمات کلیدی فوق قابل حل است. ============== کلاس a رو چجوری تعریف کنم که کلاس b بتونه اون رو به ارث ببره ولی بیرون از این namespace کسی نتونه به ارث ببرش؟ برای namespace نمیتوانید کاری کنید ولی برای داخل و خارج یک اسمبلی (dll یا exe) میتوان کارهایی کرد. اگر بخواهید کلاسهای CA و CB در دسترس عموم و public کنید، تنها راهی که میماند آن است که سازنده های کلاس CA شما internal باشند. !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! حالا ... 1- کلاس CA عمومی است. 2- کلاس CA در خارج از اسمبلی جاری راحت قابل نمونه سازی (new) نخواهد بود. (اگر میخواهید به راحتی قابل new باشد، میتواند کلاس با کد خالی CC را اضافه کنید، تا در خارج از اسمبلی جاری CC را new کنند، که طبیعتاً فرقی با new کردن CA ندارد!) 3- کلاس CA قابل وراثت گیری نخواهد بود. (همان چیزی که خواسته اید) 4- کلاس CA میتواند abstract باشد که در این صورت در داخل اسمبلی هم قابل نمونه سازی نخواهد بود. (پیشنهاد میکنم یکم کدها را اصلاح کنید و اجازه وراثت را بدهید! کی به کی؟!) می خوام هر کسی بتونه کلاس a من رو به ارث ببره ولی نتونه کلاس b رو به ارث ببره. c باید قابلیت override شدن داشته باشه ولی d نه. همانطور که کاربر MEHDI توضیح دادند: !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! ============== وقتی که طرف d رو از کلاس a صدا می زنه، همونطور که مشخصه باید e از کلاس b صدا زده بشه و (یه سری کار روش انجام بده و) اون هم c رو از کلاس a صدا بزنه. به نظر میرسد دو کلاس a و b جدید شما با هم رابطه ی وراثتی ندارند، نتیجتاً یا باید متدها static باشند (روشی نچندان شی گرا) و یا اینکه یکی از کلاسهای a و b که زودتر نمونه سازی میشود دیگری را هم نمونه سازی کند. !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! سعی کنید تفکر ساده و قدرتمندی داشته باشید. موفق باشید. dogtag29-03-2009, 07:04 PMهم با تشکر از جناب M E H D I و همچنین با تشکر ویژه از جناب استاد _H2_. جدی عالی یاد می دید ها. فقط میشه لطف کنید بگید کلید واژه ها بین #C و VB.net هم معنی هستند. مثلاً NotInheritable خب خیلی معلومه ولی sealed چیز خاصی رو نمی رسونه! (+ اگر من رو بکشید با VB نمی نویسم و به جاش #Cش رو هر چند سخت، یاد می گیرم [و می دونم که این اصلاً خوب نیست و باید net. یاد گرفت نه #C]) M E H D I30-03-2009, 12:39 AMفقط میشه لطف کنید بگید کلید واژه ها بین #C و VB.net هم معنی هستند. مثلاً NotInheritable خب خیلی معلومه ولی sealed چیز خاصی رو نمی رسونه! (+ اگر من رو بکشید با VB نمی نویسم و به جاش #Cش رو هر چند سخت، یاد می گیرم [و می دونم که این اصلاً خوب نیست و باید net. یاد گرفت نه #C]) sealed فقط به معنی NotInheritable نیست. sealed اگه برای کلاس باشه به معنی این هست که کلاس رو نمیشه ارث بری کرد اما اگه برای متد یا property استفاده بشه به این معنی هست که override فعلی آخرین override از متد هست یعنی دیگه نمیشه این متد رو override کرد. توی این حالت حتما باید به همراه کلمه کلیدی override استفاده بشه. برای struct ها هم نمیشه از sealed استفاده کرد چون به صورت ضمنی همه ساختارها sealed هستن که VB برای این حالت NotOverridable رو استفاده میکنه. من VB رو زیاد کار نکردم باهاش. MustInherit فکر کنم میشه همون abstract MustOverride هم فکر کنم همون abstract باشه وقتی روی متد استفاده بشه. Shadows هم فکر کنم یه چیزی تو مایه های new باشه برای متد ( درسته؟ :31: ) _H2_30-03-2009, 02:29 AMسلام توضیحات کاربر MEHDI صحیح بودند و گفتم یک توضیح مختصر اضافه کنم ... کلمات وراثتی VB.Net برای class و property+method تفاوت دارد ولی در C#.Net چنین نیست. (البته در موارد دیگر چیزهای برعکس هم داریم که #C چند کلمه دارد و VB یک کلمه) ... این کلمات کلیدی C#.Net در واقع از ++C آماده اند. !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! البته کلمات کلیدی Shadows و Overloads و new (نه آن new نمونه سازی !) هم وجود دارند که خیلی به مفاهیم فوق نزدیک هستند ولی من نمیتوانم آنها را جزء گروه کلمات کلیدی مرتبط با وراثت و پلیمورفیزم طبقه بندی کنم. جمیعاً موفق باشید. سایت ما را در گوگل محبوب کنید با کلیک روی دکمه ای که در سمت چپ این منو با عنوان +1 قرار داده شده شما به این سایت مهر تأیید میزنید و به دوستانتان در صفحه جستجوی گوگل دیدن این سایت را پیشنهاد میکنید که این امر خود باعث افزایش رتبه سایت در گوگل میشود




این صفحه را در گوگل محبوب کنید

[ارسال شده از: سایت ریسک]
[مشاهده در: www.ri3k.eu]
[تعداد بازديد از اين مطلب: 472]

bt

اضافه شدن مطلب/حذف مطلب




-


گوناگون

پربازدیدترینها
طراحی وب>


صفحه اول | تمام مطالب | RSS | ارتباط با ما
1390© تمامی حقوق این سایت متعلق به سایت واضح می باشد.
این سایت در ستاد ساماندهی وزارت فرهنگ و ارشاد اسلامی ثبت شده است و پیرو قوانین جمهوری اسلامی ایران می باشد. لطفا در صورت برخورد با مطالب و صفحات خلاف قوانین در سایت آن را به ما اطلاع دهید
پایگاه خبری واضح کاری از شرکت طراحی سایت اینتن