class, obyekt, primary va secondary konstruktor, metodlar
9-sinfAndroid dasturlash5-hafta · 15-darsChizma va undan yaratilgan nusxa
Sinf ichidagi funksiyalar
Primary, secondary va init
fun f(a: Int, b: Int = 3) = a + b. f(4) nimaga teng?
b berilmadi, standart 3 olinadi: 4 + 3.Chizma va undan yaratilgan nusxa
class Person {
var name = "Undefined"
var age = 18
}
fun main() {
val tom = Person()
println(tom.name)
tom.name = "Tom"
tom.age = 37
println("${tom.name} ${tom.age}")
}
new kerak emas: sinf nomi qavs bilan chaqiriladi. Xossaga obyekt.xossa orqali murojaat qilinadi.Kotlinda Person sinfidan obyekt qanday yaratiladi?
new ishlatilmaydi.Sinf ichidagi funksiyalar
class Person {
var name = "Undefined"
var age = 18
fun sayHello() {
println("Hello, my name is $name")
}
fun personToString(): String = "$name, $age yosh"
}
fun main() {
val tom = Person()
tom.name = "Tom"
tom.sayHello()
println(tom.personToString())
}
name va age ga tom. yozmasdan murojaat qilinadi: ular shu obyektniki.Sinf ichidagi funksiya qanday ataladi?
Primary, secondary va init
class Person(val name: String, var age: Int) {
init {
println("Obyekt yaratildi: $name")
}
constructor(name: String) : this(name, 18) {
println("Yosh berilmadi, 18 olindi")
}
}
fun main() {
val tom = Person("Tom", 37)
val bob = Person("Bob")
}
this(...) bilan unga bog'lanadi.Primary konstruktor bor sinfda secondary konstruktor nima qilishi shart?
: this(...) orqali amalga oshadi.class Person(val name: String, var age: Int): sinf sarlavhasida, bittaconstructor(name: String) : this(name, 18): sinf ichida, bir nechtaSecondary har doim this(...) bilan primary ga tayanadi.
Obyektning chizmasi: xossalar va metodlar
Sinfdan yaratilgan nusxa: Person()
Obyektning ma'lumoti: name, age
Sinf ichidagi funksiya: sayHello()
class Person va xossalarni yozing.
Boshlang'ich qiymatlarni primary konstruktorga bering.
Person(...) yarating va metodini chaqiring.
| Xususiyat | Primary | Secondary |
|---|---|---|
| Joyi | sinf sarlavhasida | sinf tanasida |
| Soni | faqat bitta | bir nechta |
| Kalit so'z | constructor ixtiyoriy | constructor majburiy |
| Bog'lanish | - | this(...) shart |
Pastga bosing: yaratilish tartibi
Person(...) chaqiriladi, mos konstruktor tanlanadi.this(...) orqali primary ga o'tadi.init bloki ishlaydi, so'ng konstruktor tanasi bajariladi.
class Person {
var name = "Undefined"
var age = 18
}
class Person(var name: String, var age: Int) {
fun sayHello() {
println("Hello, $name")
}
}
Sinfdan istalgancha obyekt yaratish mumkin.
Person sinfini name (standart "Undefined") va age (18) xossalari bilan yozing. Obyekt yaratib, qiymatlarini chiqaring.Person ga sayHello() va personToString() metodlarini qo'shing va chaqiring.Person(name, age) primary konstruktorini va Person(name) secondary konstruktorini (this(name, 18)) yozing. init blokida xabar chiqaring.Sinf - chizma, obyekt - nusxa.
Sinf ichidagi funksiyalar, obyekt.metod().
Primary, secondary va this(...), init.
Uyga vazifa: Student sinfi, konstruktorlar va metodlar.
List, MutableList, Set va Map
6-hafta · 16-dars