این قسمت کلاس و ارث بری
در صورتی که قسمت های قبلی رو از دست دادید:
کلاس به ما اجازه میده که شی تعریف کنیم. تعریف کلاس در زبان دارت مشابه زبان های دیگست.
تو این کلاسی که نوشتم در قسمت constructor دو مقدار name و age رو ورودی میگیریم و به شی که میسازیم نسبت میدیم. متد speak هم متد دلخواهی هست که برای این کلاس تعریف کردم. بعد از تعریف کلاس در تابع main که بلافاصله بعد از اجرای برنامه خونده میشه یک شی جدید میسازم. برخلاف سایر زبان ها که معمولا از new استفاده میکنند اینجا از اسم خود کلاس استفاده میکنیم و بعد متد speak رو برای شی که ساختیم پیاده میکنیم.
برای تعریف قسمت constructor یک روش ساده تر هم وجود داره که توصیه میکنم از هر دو روش استفاده کنید. همچنین برای تعریف پارامتر ها هم میشه از تایپشون استفاده کرد.
همچنین برای تعریف توابع و پارامتر های خصوصی میتونید از یک underline یا underscore قبل از اسمشون استفاده کرد.
برای تعریف متد های getter & setter هم از این روش استفاده میکنیم:
زبان هایی مثل Java به ما اجازه میدند که چندین constructor برای یک کلاس تعریف کنیم که هرکدوم مقادیر متفاوتی از پارامترهارو دارند و توی سازنده کلاس ازش استفاده میکنند.
توی زبان دارت هم میتونیم از این خاصیت استفاده کنیم و با روش دیگری سازنده کلاس رو پیاده سازی کنیم. (البته من برای خوانایی کد قبلی سازنده رو حذف کردم)
وراثت
در این مثال من کلاس از Person کلاس Employee رو ارث گرفتم پس همه متدهاو ... کلاس والد به کلاس Employee هم ارث میرسه. توی سازنده کلاس با استفاده از متد super میتونیم متد ها و متغیر هامون رو از کلاس والد بگیریم.
من برای کلاس جدید Employee یک متغیر جدید دیگه هم در نظر گرفتم که توی سازنده کلاس بهش میدم.
برای اینکه بیشتر نکات ارث بری رو همینجا گفته باشم به override کردن متد ها هم اشاره کنم که برای اینکار کافیه یک دکوراتیو بزنیم و متد جدیدمون رو تعریف کنیم .
اگر به تابع اصلی برناممون دقت کنیم میبینم که در خط اول بعد از تعریف یک شی جدید از کلاس جدیدمون، پارامتر جدیدی هم که تعریف کردیم ورودی دادیم.
ویژگی cascade operator
در خط دوم به جای اینکه از عبارت bob.speak برای صدا زدن متد speak استفاده کنیم میایم از زنجیره دارت استفاده میکنیم به این شکل که علامت ; از انتهای خط تعریف شی رو حذف میکنیم و با ۲ تا نقطه متد مورد نظر رو صدا میزنیم . دقت کنید که میتونیم بیشمار متد و ... رو با استفاده از این زنجیره پشت سر هم استفاده کرد و هر دفعه خود شی رو صدا نزنیم.
اگه دقت کنید تو کلاس جدید برای تعریف ورودی جدید joinDate از نوع DateTime استفاده کردم و قبلش هم کلمه final رو به کار بردم . کلمه فاینال همون طور که تو قسمت ۴ مطرح شد برای اینه که دیگه نشه بعد تعریف ، تغییرش داد.
پس وقتی وقتی میخوایم این خصوصیت از شی bob رو تغییر بدیم به خطا میرسیم چون مقدار این خاصیت دیگه تغییر نمیکنه !
همچنین سایر قسمت های این سری از آموزش دارت:
قسمت۱ قسمت۲ قسمت۳ قسمت۴ قسمت۵ قسمت۶
از نوشته های دیگر من در ویرگول
Contact With me:
https://t.me/nimamohamadian
https://www.facebook.com/nimamohamadian89
https://twitter.com/Nima_Mohamadian
https://www.linkedin.com/in/nima-mohamadian-57ba63123/