ارث بری ( Inheritance ) در سی شارپ
ارثبری (Inheritance) یکی از مفاهیم کلیدی شیءگرایی در سیشارپ است که به کلاسها اجازه میدهد رفتارهای کلاس دیگر را به ارث ببرند
ارث بری ( Inheritance ) در سی شارپ
ارثبری (Inheritance) یکی از مفاهیم اصلی برنامهنویسی شیءگرا در زبان سیشارپ است که امکان بازاستفاده از کدها و توسعه آنها را فراهم میکند.
در این روش، یک کلاس جدید (کلاس مشتقشده) میتواند ویژگیها، متدها و رفتارهای یک کلاس موجود (کلاس پایه) را به ارث ببرد.
با استفاده از ارثبری، برنامهنویسان میتوانند ساختارهای سلسلهمراتبی برای اشیاء ایجاد کنند که در آن کلاسهای مشترک بهعنوان پایه تعریف میشوند
و کلاسهای خاصتر از آنها مشتق میشوند.
این ساختار باعث سادهتر شدن کدنویسی، کاهش تکرار کد، و افزایش خوانایی و قابلیت نگهداری میشود.
سیشارپ از ارثبری چندگانه بهصورت مستقیم پشتیبانی نمیکند، اما این محدودیت را با استفاده از رابطها (Interfaces) جبران میکند.
همچنین میتوان متدهای کلاس پایه را با استفاده از کلمات کلیدی virtual و override در کلاسهای مشتقشده بازنویسی کرد تا رفتار آنها تغییر کند.
این قابلیت، همراه با ابزارهایی مانند abstract و sealed، امکان ایجاد ساختارهای انعطافپذیر و قابلکنترل را فراهم میآورد.
بااینحال، استفاده نادرست از ارثبری ممکن است منجر به وابستگی زیاد بین کلاسها شود، بنابراین باید با دقت طراحی شود.
نحو (Syntax) ارثبری در سیشارپ
برای ایجاد ارثبری، کافی است از علامت : بین کلاس مشتقشده و کلاس پایه استفاده کنید.
// تعریف کلاس پایه
public class Animal
{
public void Eat()
{
Console.WriteLine("Eating...");
}
}
// تعریف کلاس مشتقشده
public class Dog : Animal
{
public void Bark()
{
Console.WriteLine("Barking...");
}
}
// استفاده از کلاسها
class Program
{
static void Main(string[] args)
{
Dog dog = new Dog();
dog.Eat(); // متد کلاس پایه
dog.Bark(); // متد کلاس مشتقشده
}
}
در این مثال، کلاس Dog از کلاس Animal ارث میبرد و علاوه بر متد Eat، متد جدیدی به نام Bark نیز دارد.
انواع ارثبری در سی شارپ
سیشارپ از ارثبری چندگانه (Multiple Inheritance) بهطور مستقیم پشتیبانی نمیکند، اما انواع دیگر ارثبری در این زبان به شرح زیر هستند:
-
ارثبری ساده (Single Inheritance)
یک کلاس از یک کلاس دیگر ارث میبرد. مثال بالا نمونهای از ارثبری ساده است. -
ارثبری چندسطحی (Multilevel Inheritance)
یک کلاس از یک کلاس دیگر ارث میبرد، و سپس کلاسی دیگر از کلاس مشتقشده ارث میبرد.
public class Animal
{
public void Eat() => Console.WriteLine("Eating...");
}
public class Mammal : Animal
{
public void Walk() => Console.WriteLine("Walking...");
}
public class Dog : Mammal
{
public void Bark() => Console.WriteLine("Barking...");
}
// استفاده
Dog dog = new Dog();
dog.Eat();
dog.Walk();
dog.Bark();
-
ارثبری سلسلهمراتبی (Hierarchical Inheritance)
چندین کلاس از یک کلاس پایه ارث میبرند.
public class Animal
{
public void Eat() => Console.WriteLine("Eating...");
}
public class Dog : Animal
{
public void Bark() => Console.WriteLine("Barking...");
}
public class Cat : Animal
{
public void Meow() => Console.WriteLine("Meowing...");
}
-
ارثبری ترکیبی (Hybrid Inheritance)
ترکیبی از چند نوع ارثبری است.
سیشارپ ارثبری چندگانه مستقیم را پشتیبانی نمیکند، اما میتوان با استفاده از رابطها (Interfaces) این محدودیت را دور زد.
بازنویسی متدها (Method Overriding)
در سیشارپ، متدهای کلاس پایه را میتوان در کلاس مشتقشده بازنویسی کرد.
این کار با استفاده از کلمهکلیدی virtual در متد کلاس پایه و override در متد کلاس مشتقشده انجام میشود.
public class Animal
{
public virtual void Speak()
{
Console.WriteLine("Animal is speaking...");
}
}
public class Dog : Animal
{
public override void Speak()
{
Console.WriteLine("Dog is barking...");
}
}
// استفاده
Animal animal = new Dog();
animal.Speak(); // خروجی: Dog is barking...
🌟 آیا به دنبال یک فرصت عالی برای یادگیری برنامهنویسی هستید؟ 🚀
با دوره آموزشی سیشارپ ما، شما میتوانید مهارتهای خود را به سطح جدیدی ارتقا دهید! این دوره بهطور کامل طراحی شده تا به شما کمک کند تا از مبتدی تا پیشرفته در دنیای برنامهنویسی سیشارپ پیش بروید.
👨🏫 چرا دوره ما را انتخاب کنید؟
- محتوای جامع و عملی: با پروژههای واقعی و تمرینات عملی، یادگیری را به تجربهای جذاب تبدیل کنید.
- مدرس مجرب: از تجربه و دانش مدرس حرفهای بهرهمند شوید که شما را در هر مرحله از یادگیری راهنمایی میکنند.
- پشتیبانی ۲۴/۷: هر زمان که سوالی داشتید، ما در کنار شما خواهیم بود تا به شما کمک کنیم.
- دسترسی مادامالعمر: به محتوای دوره دسترسی دائمی داشته باشید و هر زمان که خواستید، میتوانید به آن مراجعه کنید.
💡 فرصت را از دست ندهید!
بایادگیری سیشارپ، میتوانید در دنیای فناوری اطلاعات به یک متخصص تبدیل شوید و در پروژههای جذاب و چالشبرانگیز شرکت کنید.
همین امروز به جمع یادگیرندگان ما بپیوندید و اولین قدم را به سوی آیندهای روشنتر بردارید!
شرکت در دوره آموزش برنامه نویسی سی شارپ
کلیدواژههای مرتبط با ارثبری در سیشارپ
-
base
این کلیدواژه برای دسترسی به متدها یا ویژگیهای کلاس پایه در کلاس مشتقشده استفاده میشود.
public class Animal
{
public virtual void Speak() => Console.WriteLine("Animal speaking...");
}
public class Dog : Animal
{
public override void Speak()
{
base.Speak(); // صدا زدن متد کلاس پایه
Console.WriteLine("Dog barking...");
}
}
-
sealed
این کلیدواژه باعث میشود که دیگر هیچ کلاسی نتواند از کلاس یا متد مشخصشده ارث ببرد.
public sealed class Animal
{
public void Speak() => Console.WriteLine("Animal speaking...");
}
// خطای کامپایل: کلاس Animal مهروموم شده است
// public class Dog : Animal { }
-
abstract
کلاسها یا متدهای abstract فقط بهعنوان یک طرح (Template) تعریف میشوند و باید در کلاسهای مشتقشده پیادهسازی شوند.
public abstract class Animal
{
public abstract void Speak();
}
public class Dog : Animal
{
public override void Speak() => Console.WriteLine("Dog barking...");
}
مزایای ارثبری در سی شارپ
-
بازاستفاده کد
با تعریف ویژگیها و رفتارهای مشترک در کلاس پایه، از کدنویسی تکراری اجتناب میشود. -
سادهسازی کد
با استفاده از ارثبری، ساختار کلاسها واضحتر و قابلمدیریتتر میشود. -
قابلیت توسعهپذیری
کلاسهای جدید را میتوان بر اساس کلاسهای موجود توسعه داد. -
پلیمورفیسم (Polymorphism)
ارثبری امکان تعریف رفتارهای مختلف برای کلاسهای مشتقشده را فراهم میکند.
محدودیتها و چالشها
-
عدم پشتیبانی از ارثبری چندگانه
در سیشارپ نمیتوان مستقیماً از چند کلاس پایه ارث برد.
این مشکل با استفاده از رابطها (Interfaces) قابل حل است. -
وابستگی زیاد
ارثبری میتواند وابستگی بین کلاسها را افزایش دهد و نگهداری کد را دشوار کند. -
مشکل در تغییرات
تغییر در کلاس پایه ممکن است کلاسهای مشتقشده را تحت تأثیر قرار دهد.
مثالهای پیشرفته از ارثبری
-
ترکیب ارثبری و رابطها
public interface IFlyable
{
void Fly();
}
public class Bird : Animal, IFlyable
{
public void Fly() => Console.WriteLine("Flying...");
}
-
استفاده از چند سطح ارث بری
public class Vehicle { public void Start() => Console.WriteLine("Vehicle started..."); } public class Car : Vehicle { public void Drive() => Console.WriteLine("Driving..."); } public class ElectricCar : Car { public void Charge() => Console.WriteLine("Charging..."); }
ارثبری یکی از مفاهیم کلیدی برنامهنویسی شیءگرا است که مزایای زیادی مانند بازاستفاده از کد، کاهش پیچیدگی، و سادهسازی توسعه نرمافزار را ارائه میدهد.
با این حال، باید با دقت و درک کامل از نیازهای پروژه استفاده شود، زیرا ممکن است وابستگیهای نامطلوبی ایجاد کند.
سیشارپ با پشتیبانی از ارثبری، ابزار قدرتمندی برای مدیریت کدهای شیءگرا فراهم میکند و در ترکیب با سایر مفاهیم مانند پلیمورفیسم و انتزاع، انعطافپذیری بیشتری ارائه میدهد.




کاربران ما
شما هم نظرتون با ما دریاره “ارث بری ( Inheritance ) در سی شارپ” اشتراک بزارید
برای ارسال نظر لطفا ورود یا ثبت نام کنید