کلاس های غیر عملی ( 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) نماید ، در غیر اینصورت به خطا برخورد می کند .
این عمل به برنامه نویسان این اطمینان خاطر را می دهد که سایر برنامه نویسان که از کلاس های آنها استفاده می نمایند به درستی توابع مهم کلاس را بازنویسی و مقداردهی نمایند . به خروجی مثال بالا در تصویر زیر توجه نمایید :
جهت کسب اطلاعات بیشتر از این آدرس به سایت اصلی دارت مراجعه نمایید .
امیدوارم این مطلب برای شما مفید باشد .