مفهوم وراثت در OOP چیست

خلاصه
1404/05/24

وراثت (Inheritance) یکی از مفاهیم اساسی در برنامه‌نویسی شیءگرا (OOP) است که به یک کلاس (فرزند یا زیرکلاس) اجازه می‌دهد تا ویژگی‌ها و رفتارهای کلاس دیگری (والد یا سوپرکلاس) را ب

مفهوم وراثت در OOP چیست

وراثت (Inheritance) یکی از مفاهیم اساسی در برنامه‌نویسی شیءگرا (OOP) است که به یک کلاس (فرزند یا زیرکلاس) اجازه می‌دهد تا ویژگی‌ها و رفتارهای کلاس دیگری (والد یا سوپرکلاس) را به ارث ببرد. به عبارت ساده‌تر، یک کلاس جدید می‌تواند بر اساس یک کلاس موجود ساخته شود و از کدهای موجود استفاده کند، در نتیجه از تکرار کد جلوگیری می‌شود و سازماندهی بهتری در کد ایجاد می‌شود.

**مفاهیم کلیدی وراثت:**

* **کلاس والد (Parent Class/Superclass/Base Class):** کلاسی که ویژگی‌ها و رفتارهایش به ارث می‌رسد.
* **کلاس فرزند (Child Class/Subclass/Derived Class):** کلاسی که از کلاس والد ارث می‌برد و می‌تواند ویژگی‌ها و رفتارهای جدیدی را اضافه کند یا رفتارهای به ارث رسیده را تغییر دهد (override کند).
* **ارث بری (Inheritance):** فرآیند به ارث بردن ویژگی‌ها و رفتارها از کلاس والد به کلاس فرزند.
* **ویژگی‌ها (Attributes/Properties):** متغیرهایی که وضعیت یک شیء را نشان می‌دهند (مانند نام، سن، رنگ و غیره).
* **رفتارها (Behaviors/Methods):** توابعی که عملیاتی را انجام می‌دهند که یک شیء می‌تواند انجام دهد (مانند حرکت، صحبت کردن، محاسبه و غیره).

**مزایای استفاده از وراثت:**

* **قابلیت استفاده مجدد از کد (Code Reusability):** کلاس فرزند می‌تواند از کدهای کلاس والد استفاده کند، بدون اینکه نیاز باشد آن‌ها را دوباره بنویسد. این امر منجر به کاهش حجم کد و افزایش سرعت توسعه می‌شود.
* **سازماندهی بهتر کد (Code Organization):** وراثت به سازماندهی منطقی‌تر کد کمک می‌کند. کلاس‌های فرزند می‌توانند بر اساس کلاس‌های والد خود، در یک ساختار سلسله مراتبی سازماندهی شوند.
* **گسترش‌پذیری (Extensibility):** با استفاده از وراثت، می‌توان به راحتی قابلیت‌های جدیدی را به سیستم اضافه کرد. می‌توان کلاس‌های فرزند جدیدی را ایجاد کرد که رفتار کلاس‌های والد را گسترش دهند یا تغییر دهند.
* **پلی‌مورفیسم (Polymorphism):** وراثت یکی از ارکان اصلی پلی‌مورفیسم است. پلی‌مورفیسم به این معنی است که یک شیء می‌تواند در شرایط مختلف، رفتارهای متفاوتی از خود نشان دهد. با استفاده از وراثت، می‌توان اشیاء مختلفی را ایجاد کرد که همگی از یک کلاس والد ارث برده‌اند، اما رفتارهای خاص خود را دارند.

**انواع وراثت:**

* **وراثت تک (Single Inheritance):** یک کلاس فرزند فقط می‌تواند از یک کلاس والد ارث ببرد.
* **وراثت چندگانه (Multiple Inheritance):** یک کلاس فرزند می‌تواند از چندین کلاس والد ارث ببرد. (این نوع وراثت در برخی از زبان‌ها مانند جاوا پشتیبانی نمی‌شود، زیرا می‌تواند منجر به ابهام شود.)
* **وراثت چند سطحی (Multilevel Inheritance):** یک کلاس فرزند از یک کلاس والد ارث می‌برد و سپس یک کلاس فرزند دیگر از آن کلاس فرزند اول ارث می‌برد.

**مثال ساده (پایتون):**

```python
class Animal: # کلاس والد
def __init__(self, name):
self.name = name

def speak(self):
print("Sound of animal")

class Dog(Animal): # کلاس