اشاره به خصوصیات کلاس
يكشنبه, ۱۳ اسفند ۱۴۰۲، ۰۶:۵۰ ب.ظ
به نام خدا. در این مطلب به نحوه اشاره و استفاده از خصوصیات کلاس در رفتار های آن می پردازیم.
در ادامه مطلب با فلاترلند همراه باشید.
در مطالب قبلی آموختیم که یک کلاس می تواند خصوصیات و رفتار هایی را در خود جای بدهد، همچنین دانستیم کلاس به عنوان یک نوع داده نیز می تواند استفاده شود. در این مطلب قصد داریم تا از مقادیری که کاربر در متغیر های یک شی می گنجاند در رفتار های کلاس استفاده کنیم.
برای استفاده از متغیر ها در توابع قرار گرفته شده در کلاس از کلمه کلیدی this استفاده می شود. این کلمه به شی ساخته شده از روی این کلاس اشاره می کند. به این مثال ها توجه کنید:
void main(List<String> args) {Vehicle ferrari = Vehicle();ferrari.name = "Ferrari 2016";ferrari.model = "New Face";ferrari.speed = "415";
ferrari.getInfo();}
class Vehicle {String? name;String? model;String? speed;
void getInfo() {print("Name: ${this.name}, Model: ${this.model}, Speed: ${this.speed}");}}
در مثال بالا یک کلاس به نام Vehicle ساختیم و از آن یک شی با نام ferrari به وجود آوردیم.
به متغیر های شی مقدار دادیم و رفتاری به نام getInfo که مشخصات را پرینت می کند را فراخوانی کردیم.
در بدنه getInfo متغیر هایی از سطح کلاس واکشی کردیم و پرینت کردیم. در واقع با کلمه this گفتیم که مقداری که شی دارد را برگردان.
شاید بپرسید چرا مستقیما مقدار هایی مثل name یا model را پرینت نمی کنیم؟در واقع this اشاره می کند به متغیر شی و این امکان وجود دارد که در متود ما متغیری هم نام با name یا model وجود داشته باشد و کامپایلر دچار اشتباه شود.
خروجی کد بالا:
Name: Ferrari 2016, Model: New Face, Speed: 415
همچنین می توانستیم به این متغیر ها مقدار بدهیم. به این مثال توجه کنید:
void main(List<String> args) {Vehicle ferrari = Vehicle();ferrari.name = "Ferrari 2016";ferrari.model = "New Face";ferrari.speed = 415;
ferrari.tuneCar();ferrari.getInfo();}
class Vehicle {String? name;String? model;int? speed;
void getInfo() {print("Name: ${this.name}, Model: ${this.model}, Speed: ${this.speed}");}void tuneCar() {this.name = this.name! + "Custom Tune";this.speed = this.speed! + 80;}}
در اینجا یک متود جدید به نام tuneCar ساختیم که مشخصات ماشین را تغییر می دهد. همچنین این متود را قبل از فراخوانی متود getInfo صدا زدیم. در نتیجه این کار اسم ماشین هرچیزی که باشد Custom Tune به آن اضافه می شود همچنین سرعت ماشین هم ۸۰ تا اضافه می شود.
در نتیجه خروجی کد بالا به شکل زیر است:
Name: Ferrari 2016 Custom Tune, Model: New Face, Speed: 495
- ۰۲/۱۲/۱۳