المنشئات الأساسية
جزء من قسم البرمجة كائنية التوجه في رحلة Kotlin على Coddy. الدرس 3 من 57.
تأخذ معظم أصناف Kotlin قيمها الابتدائية في المُنشئ الأساسي، ويُكتب بين قوسين بعد اسم الصنف. إن وضع val أو var أمام مُعامل يجعله خاصية في الوقت نفسه:
class Book(val title: String, var pages: Int)داخل main:
val book = Book("Dune", 412)
println(book.title)
book.pages += 8
println(book.pages)الناتج:
Dune
420المعامل الذي لا يحتوي على val أو var يكون متاحًا فقط أثناء إنشاء النسخة، مثلًا لحساب خاصية. لا يمكن إعادة إسناد الخصائص val بعد الإنشاء؛ بينما يمكن إعادة إسناد خصائص var:
class Temperature(celsius: Double) {
val fahrenheit = celsius * 9 / 5 + 32
}داخل main:
val t = Temperature(100.0)
println(t.fahrenheit)الناتج:
212.0يمكن أن تحتوي معاملات المُنشئ على قيم افتراضية، ويمكن تمريرها بالاسم، لذا يغطي مُنشئ واحد العديد من طرق إنشاء مثيل:
class Timer(val seconds: Int, val label: String = "timer")داخل main:
val egg = Timer(300, "egg")
val quick = Timer(30)
val named = Timer(label = "tea", seconds = 180)
println("${egg.label} ${egg.seconds}")
println("${quick.label} ${quick.seconds}")
println("${named.label} ${named.seconds}")الناتج:
egg 300
timer 30
tea 180داخل جسم الفئة، تشير this إلى النسخة الحالية. وتكون مطلوبة عندما تكون لمعلمة إحدى الدوال الاسم نفسه الذي لخاصية:
class Player(var name: String) {
fun rename(name: String) {
this.name = name
}
}داخل main:
val p = Player("anon")
p.rename("Ada")
println(p.name)الناتج:
Adaالتحدي
سهلصرّح بالصنف Account باستخدام مُنشئ أساسي: owner للقراءة فقط وbalance قابل للتغيير، وتكون قيمته الافتراضية 0. أضف summary()، الذي يعيد Ada has 150.
يقرأ الكود المُزوَّد اسم المالك، وعندما يكون هناك سطر ثانٍ، يقرأ الرصيد الابتدائي. ينشئ الحساب مع الرصيد أو بدونه، ثم يطبع summary().
ضع الكود الخاص بك في Account.kt. يحتوي Main.kt على كود الإدخال/الإخراج المُزوَّد ولا يمكن تعديله.
جرّب بنفسك
fun main() {
// كود الإدخال/الإخراج المُزوَّد: أبقِه كما هو
val input = generateSequence(::readLine).toList()
val account = if (input.size > 1) Account(input[0], input[1].toInt()) else Account(input[0])
println(account.summary())
}
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس البرمجة كائنية التوجه
1الفئات والكائنات
العمل مع الملفاتتعريف الفئاتالمنشئات الأساسيةكتل init والتحقق من الصحةالمنشئات الثانويةمراجعة - بطاقة المكتبة4الوراثة
الأصناف المفتوحة والأصناف الفرعيةتجاوز الأعضاءsuper والمنشئاتالأصناف المجرّدةمراجعة - دليل الموظفينتدرّب بنفسك: Playground لـ Kotlin