zavod Person.fromType([PersonType turi]) {
almashtirish (turi) {
hol PersonType.employee: qaytish yangi Xodim();
hol PersonType.student: qaytish yangi Student();
}
qaytish Shaxs();
}
String getFullName() => "$firstName $lastName";
}
enum Shaxs turi { talaba, xodim }
Zavod _ konstruktor zavodni qo'shish orqali aniqlanadi kalit so'z, undan keyin konstruktor ta'rifi, odatda asosiy sinf yoki mavhum sinf turida. Bizning holatda, Shaxs sinf belgilaydi a zavod nomi bilan atalgan konstruktor asoslangan yoqilgan Shaxs turi belgilangan ichida argument. Hech qanday tur o'tkazilmasa, u oddiy Shaxsni yaratadi standart konstruktor yordamida sinf .
Boshqa muhim narsa uchun Eslatma hisoblanadi bu the zavod konstruktor qiladi emas almashtiring the standart sinf konstruktori. Shunday qilib, u va uning avlodlari hali ham to'g'ridan-to'g'ri qo'ng'iroq qiluvchi tomonidan yaratilishi mumkin.
Maydon yordamchilar - oluvchilar va sozlagichlar
Aytilganidek ilgari, oluvchilar va sozlashchilar bizga ruxsat bering uchun sinfdagi maydonga kiring va biz ularni aniqlamasak ham, har bir maydonda ushbu qo'shimcha qurilmalar mavjud. Oldingi Shaxsda Misol uchun, biz somePerson.firstName ni bajarganimizda = "Piter" , biz birinchi ismni chaqiramiz maydon to'plami kirish va "Piter" ni yuborish unga parametr sifatida. Shuningdek, misolda, the olish aksessuar hisoblanadi ishlatilgan qachon biz qo'ng'iroq qiling the getFullName() usuli yoqilgan the shaxs va ikkala ismni birlashtiradi.
Biz mumkin o'zgartirish bizning Shaxs sinf uchun almashtiring the eski getFullName() usuli va qo'shish bu kabi quyidagi kod blokida ko'rsatilganidek, oluvchi, masalan:
sinf Shaxs { String ism; String familiya;
Shaxs (bu.ismi, this.lastName); Shaxs.anonim() {}
String olish to'liq ism => "$firstName $lastName";
String olish bosh harflar => "${firstName[0]}. ${lastName[0]}.";
}
asosiy() {
Shaxs ba'zi Shaxs = yangi Shaxs("klark", "kent");
chop etish (somePerson.fullName); // chop etadi Clark Kent chop etish (somePerson.intials); // chop etadi c. k.
somePerson.fullName = "Piter parker";
// biz bor emas belgilangan a sozlovchi to'liq ism shunday bu qilmaydi kompilyatsiya qilish
}
The quyidagi muhim kuzatishlar mumkin bo'l qilingan haqida the Oldingi misol:
Biz bir xil maydon nomlari bilan qabul qiluvchi yoki sozlagichni aniqlay olmadik: firstName va familiya . Bu bo'lardi berish Biz a kompilyatsiya qilish xato, kabi the sinf a'zolarining nomlarini takrorlab bo'lmaydi.
Bosh harflar getter tomonidan yaratilgan odam uchun xatolik chiqaradi anonim nomli konstruktor, kabi bu bo'lardi emas bor ism va familiya qiymatlar ( null ga teng ).
Biz qil emas kerak uchun har doim aniqlash the juftlik, olish va o'rnatish , birga, kabi siz mumkin biz faqat to'liq ismni aniqlaganimizni ko'ring qabul qiluvchi emas, balki sozlagich, shuning uchun biz o'zgartira olmaymiz to'liq ism . (Bu natijalar ichida a jamlama xato, kabi ko'rsatilgan oldin.)
Biz mumkin bor shuningdek yozilgan a sozlovchi uchun to'liq ism va belgilangan the mantiq orqasida bu uchun o'rnatish
ism va familiya asoslangan yoqilgan bu:
sinf Shaxs {
// ... sinf dalalar ta'rifi o'rnatish to'liq ism (String to'liq ism) {
var qismlar = fullName.split(" "); bu.firstName = qismlar.birinchi; this.familiya = qismlar.so'nggi;
}
}
Shunday qilib, kimdir to'liq ismni o'rnatish orqali odamning ismini boshlashi mumkin va natija bo'ladi bo'l the bir xil. (Of albatta, biz bor emas olib bordi tashqariga har qanday cheklar uchun o'rnatish xoh qiymat o'tdi kabi to'liq ism hisoblanadi yaroqli, bu bu, emas bo'sh, bilan ikki yoki Ko'proq qiymatlar, va shunday yoqilgan.)
Do'stlaringiz bilan baham: |