آموزش شی گرایی در زبان دارت: ارث بری
در مطلب قبلی با برنامه نویسی شی گرایی و مفهوم کلاس آشنا شدیم و در این مطلب میخواهیم با هم دیگه وارد بخش ارث بری از شی گرایی شویم.
ارث در برنامه نویسی تقریبا با مفهوم ارث بری در دنیای ما انسان ها و موجودات زنده یکی هست. یعنی همه ما یک سری از ویژگی های ظاهری و اخلاقی خودمون و از پدر و مادر خودمون به ارث میبریم.
در اینجا هم ما یک سری کلاس های والدین داریم و یک سری کلاس های فرزند که این کلاس های فرزند ویژگی های کلاس والدین را به ارث میبرند و در کنارش خودشون میتونند یک سری ویژگی های جدید تر نیز داشته باشند.
برای درک بهتر موضوع کلاس Car مثال مطلب قبلی و با استفاده از شی گرایی مینویسیم.
میدونیم که اتوموبیل, موتور, کامیون و… همگی یک نوع وسیله نقلیه به حساب می آیند پس در یک سری ویژگی ها مشترک هستند به همین دلیل ما هم کلاسی تحت عنوان Vehicle که به معنی وسیله نقلیه هست ایجاد می کنیم و ویژگی های مشترک را در آن قرار میدهیم.
class Vehicle{
int _wheel;
int _seat;
Vehicle(int seat,int wheel) {
this._wheel = wheel;
this._seat = seat;
}
void getInfo()
{
print("wheels $_wheel , seat: $_seat");
}
}
کلاس بالا دوتا ویژگی داره که تعداد صندلی و تعداد چرخ های وسیله و مشخص می کنه و یک متد داره که این مشخصان و نمایش میده.حالا یک کلاس به نام Car میسازیم که از کلاس Vehicle ارث بری کند.
class Car extends Vehicle{
String name;
String Brand;
int speed;
int _Price;
Car(String name,String Brand,int speed,int price,int seat,int wheel) : super(wheel, seat) {
this.name=name;
this.Brand=Brand;
this.speed=speed;
this._Price=price;
}
بعد از نوشتن اسم کلاس از دستور extends برای ارث بری استفاده می کنیم و با این کار کلاس Car به تمام ویژگی ها و متد های Vehicle دسترسی دارد.
کلاس Vehicle دارای یک متد سازنده با دو پارامتر هست به همین خاطر در متد سازنده کلاس Car از دستور super استفاده میکنیم تا متد سازنده کلاس والد یا همان Vehicle صدا زده شود.
main(List arguments ){
Car mycar = new Car("Pride","Saipa",120,520000,2,3);
mycar.getInfo();
}
خروجی مثال بالا به شکل زیر است.
wheels 2 , seat: 3
override
در شی گرایی مفهومی داریم به نام override که باهم دیگه به بررسی آن میپردازیم.
در مثال بالا کلاس والد ما یک متد به نام getInfo() داشت که بخشی از اطلاعات آبجکت را نمایش میداد.
حالا اگر در کلاس فرزند بخواهیم متدی به این نام داشته باشیم باید بیایم و از مفهوم override استفاده کنیم و این متد را دوباره باز نویسی کنیم چون قبلا وجود داشته است.
برای override یک متد به شکل زیر عمل میکنیم.
class Car extends Vehicle{
String name;
String Brand;
int speed;
int _Price;
Car(String name,String Brand,int speed,int price,int seat,int wheel) : super(wheel, seat) {
this.name=name;
this.Brand=Brand;
this.speed=speed;
this._Price=price;
}
@override
void getInfo() {
print("Car wheels: $_wheel ");
}
حالا یکبار دیگه کدمون و اجرا میکنیم و تفاوت خروجی را مشاهده میکنیم.
خروجی برنامه:
Car wheels: 2
مطالب زیر را حتما مطالعه کنید
آشنایی با مفهوم Mixin در زبان برنامه نویسی دارت
آشنایی با الگوی طراحی Singleton
کار با تاریخ در دارت با کلاس DateTime
آشنایی با اینترفیس در برنامه نویسی دارت
شی گرایی در زبان دارت: مفهوم کلاس
آموزش کار با لیست و آرایه در زبان برنامه نویسی دارت Dart
2 دیدگاه
به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.
میشه درمورد ستر و گتر ها یکم حرف بزنید؟
سلام, این مطلب بصورت کامل داخل دوره آموزشی توضیح داده شده, به طور خلاصه وقتی فیلد های کلاس ما از نوع پرایوت هستند برای دسترسی به آنها و یا تغییر مقدار آنها از گتر و ستر استفاده میکنیم