Newsletter

Polymorphismدر دارت

Scroll down
آرزو جزوفاییان
آرزو جزوفاییان
یک
  • محل اقامت:
    ایران
  • شهر:
    تهران
  • تماس:
    09309999386

مارس 7, 2025

20:13

arz.dev

پلی‌مورفیسم (Polymorphism) یکی از مفاهیم کلیدی در برنامه‌نویسی شی‌گرا است که به این معنی است که یک شی می‌تواند به شیوه‌های مختلفی رفتار کند. در دارت، پلی‌مورفیسم معمولاً از طریق وراثت و متدهای override یا استفاده از اینترفیس‌ها (Interfaces) پیاده‌سازی می‌شود.

در دارت، پلی‌مورفیسم به دو نوع اصلی تقسیم می‌شود:

1. پلی‌مورفیسم در زمان اجرا (Runtime Polymorphism)

این نوع پلی‌مورفیسم هنگامی رخ می‌دهد که یک شی از کلاس‌های مختلف با استفاده از ارث‌بری یا پیاده‌سازی اینترفیس‌ها، رفتارهای مختلفی را از خود نشان دهد.

2. پلی‌مورفیسم در زمان کامپایل (Compile-time Polymorphism)

این نوع پلی‌مورفیسم مربوط به ارث‌بری و اورراید کردن متدها است، یعنی در زمان کامپایل مشخص می‌شود که کدام متد فراخوانی خواهد شد.

مثال از پلی‌مورفیسم در دارت

در اینجا یک مثال ساده از پلی‌مورفیسم با استفاده از وراثت و متدهای override در دارت آورده شده است:

// تعریف یک کلاس پایه (Parent class)
class Animal {
  void speak() {
    print("Animal makes a sound");
  }
}

// تعریف کلاس Dog که از Animal ارث می‌برد
class Dog extends Animal {
  @override
  void speak() {
    print("Dog barks");
  }
}

// تعریف کلاس Cat که از Animal ارث می‌برد
class Cat extends Animal {
  @override
  void speak() {
    print("Cat meows");
  }
}

void main() {
  // ایجاد یک لیست از اشیای مختلف
  List<Animal> animals = [Dog(), Cat()];

  // استفاده از پلی‌مورفیسم
  for (var animal in animals) {
    animal.speak();  // به طور خودکار متد مناسب برای هر شی فراخوانی می‌شود
  }
}

توضیح مثال:

  • در این مثال، Dog و Cat از کلاس Animal ارث‌بری می‌کنند و هرکدام متد speak خود را اورراید می‌کنند.
  • در داخل متد main، لیستی از اشیای Animal ساخته شده است، اما شامل اشیای Dog و Cat است.
  • وقتی حلقه for برای فراخوانی متد speak روی هر عنصر اجرا می‌شود، متد مناسب برای هر شی فراخوانی می‌شود. این رفتار در واقع پلی‌مورفیسم است، زیرا کد به طور صحیح به نوع واقعی شی در زمان اجرا واکنش نشان می‌دهد.

نتیجه:

پلی‌مورفیسم به شما این امکان را می‌دهد که با استفاده از یک رابط مشترک (مثل Animal در این مثال)، کدهای انعطاف‌پذیرتر و قابل گسترش‌تری بنویسید. هرکدام از کلاس‌های فرزند می‌توانند رفتار خود را در زمان اجرا نشان دهند، بدون اینکه نیاز به تغییر کد اصلی باشد.

Posted in آموزش دارت
Write a comment
© تمامی حقوق محفوظ می باشد.
ایمیل: admin@.com
ارسال پیام
ارسال پیام

    * اطلاعات شما محفوظ خواهد ماند.