Newsletter

ارث بری در دارت inheritance

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

مارس 6, 2025

21:58

arz.dev

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

نحوه ارث‌بری در دارت

در دارت برای ارث‌بری از کلمه کلیدی extends استفاده می‌شود. با استفاده از این کلمه، یک کلاس می‌تواند از یک کلاس دیگر ارث‌بری کند و ویژگی‌ها و رفتارهای آن کلاس را به ارث ببرد.

ساختار پایه ارث‌بری در دارت

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

مثال ساده از ارث‌بری:

فرض کنید یک کلاس Animal داریم که ویژگی‌هایی مانند نام و سن را دارد، و سپس یک کلاس Dog داریم که از کلاس Animal ارث‌بری می‌کند و ویژگی‌های خاص خود را اضافه می‌کند.

dartCopy// کلاس والد
class Animal {
  String name;
  int age;

  Animal(this.name, this.age); // سازنده کلاس والد

  void speak() {
    print('$name is making a sound');
  }
}

// کلاس فرزند که از Animal ارث می‌برد
class Dog extends Animal {
  String breed;

  Dog(String name, int age, this.breed) : super(name, age); // فراخوانی سازنده کلاس والد

  @override
  void speak() {
    print('$name says Woof!');
  }
}

void main() {
  var dog = Dog('Buddy', 3, 'Golden Retriever');
  print('${dog.name} is ${dog.age} years old and is a ${dog.breed}');
  dog.speak(); // خروجی: Buddy says Woof!
}

توضیحات:

  1. کلاس والد (Animal):
    • شامل دو فیلد name و age است.
    • یک متد speak() دارد که برای چاپ صدای حیوانات به کار می‌رود.
  2. کلاس فرزند (Dog):
    • از کلاس Animal ارث می‌برد.
    • یک ویژگی جدید به نام breed (نوع سگ) اضافه می‌کند.
    • از super(name, age) برای فراخوانی سازنده کلاس والد استفاده می‌شود تا فیلدهای name و age را مقداردهی کند.
    • متد speak() را override می‌کند تا صدای سگ را چاپ کند.
  3. استفاده از @override:
    • زمانی که متدی در کلاس فرزند می‌خواهیم که همان نام متد در کلاس والد داشته باشد، از @override استفاده می‌کنیم. این نشان‌دهنده این است که ما متد را در کلاس فرزند بازنویسی (Override) کرده‌ایم.

نکات مهم در ارث‌بری:

  • سازنده‌ها: سازنده‌های کلاس والد به طور خودکار به کلاس فرزند ارث نمی‌رسند، اما می‌توانیم در کلاس فرزند از super برای فراخوانی سازنده‌های والد استفاده کنیم.
  • محدودیت‌ها: دارت فقط از یک ارث‌بری (single inheritance) پشتیبانی می‌کند. یعنی یک کلاس می‌تواند تنها از یک کلاس والد ارث ببرد.
  • متدهای ارث‌بری: کلاس فرزند تمام متدهای عمومی کلاس والد را به ارث می‌برد و می‌تواند آن‌ها را استفاده یا بازنویسی کند.

مثال با سازنده و متدهای مختلف:

class Vehicle {
  String brand;

  Vehicle(this.brand);

  void start() {
    print('The $brand vehicle is starting');
  }
}

class Car extends Vehicle {
  int wheels;

  Car(String brand, this.wheels) : super(brand);

  @override
  void start() {
    print('The $brand car with $wheels wheels is starting');
  }
}

void main() {
  var car = Car('Toyota', 4);
  car.start();  // خروجی: The Toyota car with 4 wheels is starting
}

در این مثال، کلاس Car از کلاس Vehicle ارث می‌برد و متد start() را در کلاس فرزند بازنویسی کرده است.

مزایای ارث‌بری:

  1. کاهش کد تکراری: با استفاده از ارث‌بری، می‌توانید ویژگی‌ها و متدهای مشترک را در یک کلاس والد تعریف کنید و در کلاس‌های فرزند آن‌ها را به ارث ببرید.
  2. سازگاری: اگر نیاز به تغییراتی در رفتار کلاس‌ها داشته باشید، می‌توانید آن‌ها را در کلاس والد تغییر دهید و این تغییرات در تمام کلاس‌های فرزند به‌طور خودکار اعمال می‌شود.
  3. انعطاف‌پذیری: می‌توانید رفتار کلاس‌های فرزند را با استفاده از متدهای override به دلخواه تغییر دهید.

در نهایت، ارث‌بری یک ابزار قدرتمند برای ساختاردهی و بهینه‌سازی کد در زبان‌های برنامه‌نویسی شی‌ءگرا مانند دارت است.

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

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