سلامبرای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید ارسالی توسط ravegoat برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید
ممنون آقا آرمین برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید
من از یکی سئوال میپرسم که الان نیست که جواب بده.
زیادم هست سئوالاتم و نیاز هم دارم
همونطور که میدونی آقا آرمین توی سی شارپ مبتدی هستم و تا مبحث ارث بری رو و حالا نمیدونم کامل میدونم از این مبحث یا نه ولی الان توی مبحث چند ریختی گیر کردم
مبحث تعریف تابع virtual و تغییر بدنه اش با override رو انگار یه چیزایی متوجه شدم ولی در مبحث کلی چند ریختی و مخصوصا کلمه کلیدی new و new virtual بجای override گیر کردم
در کل اطلاعات تیکه پاره از چند جا درباره مبحث چند ریختی گرفتم که الان باعث گیج شدنم شد مخصوصا در کلمه کلیدی new و new virtual اش
این سئوالاتی که در زیر مطرح کردم رو از اون نفر پرسیدم که اگه وقت کنی جواب بدی اوستا آرمین (البته هر چه سریعتر بهتربرای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید ) ممنون میشم :
ببخشید آقا علی کنجکاو شدم بدونم اون کد خط بالا چیه دقیقا؟
اگه سطح دسترسی public که اولش نوشتین رو برداریم میشه همون ساخت شی یعنی اگه این جوری باشه :
کد:Class3 a = new Class3();
ولی تا جایی که میدونم موقع تعریف شی ، سطح دسترسی براش نمیزارن
چیه دقیقا این؟
--------------
بعد یه سئوال دیگه دارم اینکه داخل یک کلاس میشه کلاس دیگه ای تعریف کرد و بعد داخل اون متد و اعضاء تعریف کرد؟ (منظورم تعریف یک کلاس کنار کلاس دیگه نیست. منظورم داخل یک کلاس هست)
چجوری میشه تو کد زیر ، از کلاس داخلی شی درست کرد یا متد meth را فراخونی کرد؟ :
فضای نام تو در تو رو فهمیدم که باید فضای نام ها را با استفاده از using و نوشتن نام فضای نام و بعد با گذاشتن نقطه و بعد نوشتن فضای نام داخلی ، ملحق کنیمکد:namespace MultiClassTest { class MyClass1 { public class MyClass2 { public string x = "1"; public string meth() { string y = "internal class"; return y; } } } }
-------------------------------------
برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید ارسالی توسط the_king برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنیدبرای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید ارسالی توسط the_king برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید
منظورتون اینه که اگه A کلاس پدربزرگ و B پدر و C فرزند باشه و مثلا متد Test در کلاس پدربزرگ یعنی کلاس A بصورت virtual تعریف شده باشه و بعد در کلاس B یه override از متد Test بسازیم و این متد رو هر جور دلمون خواست تغییر بدیم و بعد حالا میتونیم توی کلاس C متد Test در کلاس A یعنی کلاس پدربزرگ رو دوباره override کنیم؟!
ولی من اینو تست کردم دیدم وقتی میخوایم یه متد رو override کنیم ، فقط آخرین متدی که override کردیم در آخرین کلاس در دسترسمون هست و فقط اونو میتونیم تغییر بدیم و متدهای دیگه در کلاس های قبلی اش که override کردیم از دسترسمون خارج میشه یعنی وقتی در کلاس B که متد رو یه بار override کردیم (چون در کلاس A بصورت virtual تعریف کردیم) ، در دفعه ی بعد که میخوایم override تعریف کنیم یعنی وقتی در کلاس C بصورت override میخوایم بنویسیم ، فقط متد Test ای که در کلاس B (بصورت override) تعریف کردیم در دسترسمون هست و متد Test در کلاس A از دسترس مون خارج میشه
برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید ارسالی توسط the_king برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنیدبرای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید ارسالی توسط the_king برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید
من این تیکه ها رو متوجه نشدم
وقتی در کلاس پدربزرگ که متدم رو public و virtual تعریف کردم و بعد در کلاس پدر بصورت private new تعریف کردم ، از متد فرزند هم به متد مورد نظر در کلاس پدربزرگ دسترسی داشتم یعنی فرزندان ارتباط شون رو با متد در کلاس پدربزرگ از دست ندادن
------------------------------------------
یه سئوال دیگه اینکه وقتی توی کلاس پدر ، متدی با قابلیت virtual تعریف میکنم توی هیچ متدی از کلاس پسر با کلمه کلیدی this در دسترس نیست و فقط باید شی براش درست کنم تا در دسترس قرار بگیره . سطح دسترسی شم public هه
مگه کلمه کلیدی this هم کلاس خودی و هم کلاس های اجدادش رو اون عضوهایی که قابلیت دسترسی دارن (بجز public static) رو در دسترس مون قرار نمیده؟
Bookmarks