کلاس های غیر عملی ( abstract )

تعداد بازدید ها : 1,480 بازدید
 کلاس های غیر عملی ( abstract )

در برخی از موارد نیاز می شود که کلاس های فرزند حتما توابع کلاس والد را بازنویسی ( override ) کنند ، در این حالت از کلاس های غیر عملی ( abstract ) استفاده می شود . به عنوان مثال اگر کلاس حیوانات کلاس والد ما باشد و تابع صدا کردن نیز از توابع اصلی این کلاس باشد و ما مایل باشیم تمام کلاس های فرزند حتما عمل صحیح مربوط به تابع صدا را بازنویسی کنند باید کلاس والد را غیر عملی تعریف نماییم تا هر کدام از کلاس های فرزند در لحظه ارث بری از کلاس والد ، مجبور شوند تابع صدا را بازنویسی نمایند . به عنوان مثال به قطعه کد زیر توجه نمایید :

void main() {
  var mydog = new Dog('bob');
  
  print(mydog.name + ' : ' + mydog.voice()); 
}

abstract class Animal{
  String name;
  setname(name){this.name = name;}  
  voice();
}

class Dog extends Animal{ 
  voice(){
    return 'wogh wogh';
  } 
  Dog(name){
    this.setname(name);
  }
}

در خط ۷ مثال بالا کلاسی به نام حیوان (Animal) و از نوع غیرعملی (abstract) تعریف شده است . این شکل تعریف کلاس به کامپایلر دارت اعلام می کند تمام کلاس های فرزند باید حتما تابع voice ( در خط ۱۰ ) را که فاقد بدنه کد می باشد ، بازنویسی (override) کنند .

همانطور که در مثال نیز دیده می شود کلاس سگ (Dog) در خط ۱۳ از کلاس حیوان ارث بری (extends) کرده است . در این حالت کلاس سگ حتما باید تابع voice از کلاس حیوان را بازنویسی (override) نماید ، در غیر اینصورت به خطا برخورد می کند .

این عمل به برنامه نویسان این اطمینان خاطر را می دهد که سایر برنامه نویسان که از کلاس های آنها استفاده می نمایند به درستی توابع مهم کلاس را بازنویسی و مقداردهی نمایند . به خروجی مثال بالا در تصویر زیر توجه نمایید :

می خوانم   حفظ وضعیت یک StatefulWidget

کلاس های غیرعملی

جهت کسب اطلاعات بیشتر از این آدرس به سایت اصلی دارت مراجعه نمایید .

امیدوارم این مطلب برای شما مفید باشد .

1+
محمدمجتبی جوارشکیان

محمدمجتبی جوارشکیان

من محمدمجتبی جوارشکیان ، کارشناس IT و فعال اجتماعی هستم و در حوزه معماری ، طراحی ، تحلیل گری ، مدلسازی و توسعه ی محیط های نرم افزاری فعالیت دارم . بسیار خوشحال می شوم من را از انتقادات ، پیشنهادات و نظرات خود مطلع فرمایید . آدرس ایمیل : info@javareshkian.ir

ارسال یک پاسخ

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

11 + 4 =