وراثت در شی گرایی
یکشنبه 3 آبان 1394در مقاله قبل از Encapsulation و Abstraction صحبت کردیم و تفاوت های آنها را بررسی کردیم . در این مقاله دیگر خاصیت های OOP (شی گرایی) در #C که Inheritance و Polymorphism می باشند را بررسی میکنیم.
در مقاله قبل از Encapsulation و Abstraction صحبت کردیم و تفاوت های آنها را بررسی کردیم . در این مقاله دیگر خاصیت های OOP در #C که Inheritance و Polymorphism می باشند را بررسی میکنیم.
همانطور که می دانید OOP چها ر خاصیت دارد :
1. Abstraction یا انتزاع
2. Encapsulation یا کپسوله سازی
3. Inheritance یا وراثت
4. Polymorphism یا چندریختی
Inheritance به معنای چیزی یا خاصیتی را از طریق وراثت گرفتن است. برای گرفتن آن به یک ساختار سلسله مراتبی احتیاج داریم که به وسیله OOP با استفاده از Inheritance فراهم می شود. در Inheritance یک کلاس پایه و یک زیر کلاس داریم . کلاس پایه به عنوان کلاس والد، کلاس فوق العاده و ... هم شناخته می شود. و زیر کلاس با عنوان کلاس فرزند هم شناخته می شود. که خاصیت ها و متدهایی که عمومی هستند توسط زیر کلاس قابل دسترسی هستند.
متدها و هر چیزی قابل دسترسی زیر کلاس باشند ، می توانند بدون ساختن شی از کلاس والد توسط زیر کلاس صدا زده شوند.
برای ارث بری یک کلاس از کلاس دیگر ، باید زیر کلاس را به کلاس والد گسترش داد . به صورت زیر :
class ClassSuper { public void MethdoTestPublic() { Console.WriteLine("ClassTest.MethdoTestPublic"); } private void MethdoTestPrivate() { Console.WriteLine("ClassTest.MethdoTestPublic"); } } class ClassSub : ClassSuper // Inheriting from ClassSuper { public void MethodTest() { MethdoTestPublic(); // calling the super class method MethdoTestPrivate(); // calling the super class private method [Error] Console.WriteLine("ClassTest2.MethodTest"); } }
در اینجا ClassSub به ClassSuper برای دسترسی به متد و خاصیت های کلاس والد گسترش داده شده است.
انواع Inheritance
1. تک وراثت Single Inheritance
2. چند وراثت Multiple Inheritance
3. وراثت چند سطحی Multi Level Inheritance
4. وراثت سلسله مراتبی Hierarchial Inheritance
Single Inheritance
مثال بالا یکی از نمونه های single inheritance است .
class ClassSuper { // Do your code } class ClassSub : ClassSuper // Inheriting from ClassSuper { // Do your code }
Multi Level Inheritance
پیوستن دو یا تعداد بیشتری Single inheritance است. مانند شکل زیر که sub class 2 از sub class1 ارث بری میکند و sub class1 از super class ارث بری میکند. اگر با دقت نگاه کنید دو Single inheritance یک والد دارند .
class ClassSuper { // Do your code } class ClassSub1 : ClassSuper // Inheriting from ClassSuper { // Do your code } class ClassSub2 : ClassSub1 // Inheriting from ClassSub2 { // Do your code }
Hierarchial Inheritance
در Hierarcial Ihertanc ما چند زیرکلاس داریم که از یک کلاس والد ارث بری میکنند. در انجا sub class1 و sub class 2 هر دو از super Class ارث بری میکنند.
class ClassSuper { // Do your code } class ClassSub1 : ClassSuper // Inheriting from ClassSuper { // Do your code } class ClassSub2 : ClassSuper // Inheriting from ClassSuper { // Do your code }
Multiple Inheritance
این نوع ارث بری برعکس Hierarchial می باشد.در این نوع ، یک زیر کلاس از دو کلاس والد ارث بری می کند. مانند هر زبان شی گرای دیگر ، #C هم از اینگونه ارث بری پشتیبانی نمیکند.
همانطور که گفته شد اینگونه ارث بری با کلاسهای #C ممکن نیست . پس برای انجام آن از interface کمک می گیریم .
interface ISuper1 { // Do your code } interface ISuper2 { // Do your code } class ClassSub : ISuper1, ISuper2 // Inheriting from ISuper1 and ISuper2 { // Do your code }
مزایای Inheritance
1. قابلیت استفاده مجدد : استفاده از متدهای کلاس والد عمومی و خواص کلاس والد بدون تعریف یا ایجاد یک شی .
2. توسعه پذیری : گسترش منطق متدهای کلاس والد در زیر کلاسها بدون نوشتن دوباره آن متد.
3. پنهان کردن اطلاعات : کلاس والد می تواند بعضی از داده ها را خصوصی نگه دارد پس آن داده نمی تواند توسط کلاس مشتق شده تغییر داده شود.
4. نادیده گرفتن : متدهای کلاس والد برای استفاده مجدد در یک راه معنادار می توانند توسط متدهای زیر کلاس نادیده گرفته شوند.
در inheritance هر دوی کلاس های والد و زیر کلاس به هم وابسته هستند . پس اگر تغییری در کلاس والد رخ دهد روی زیر کلاس تاثیر خواهد گذاشت.
- C#.net
- 4k بازدید
- 3 تشکر