AXV

Kotlin: sinflar va konstruktorlar

class, obyekt, primary va secondary konstruktor, metodlar

9-sinfAndroid dasturlash5-hafta · 15-dars

Bugun nimalarni o'rganamiz?

Sinf va obyekt

Chizma va undan yaratilgan nusxa

Metodlar

Sinf ichidagi funksiyalar

Konstruktorlar

Primary, secondary va init

Takrorlash

fun f(a: Int, b: Int = 3) = a + b. f(4) nimaga teng?

b berilmadi, standart 3 olinadi: 4 + 3.
01

Sinf va obyekt

Chizma va undan yaratilgan nusxa

Sinfdan obyekt

class Person Xossalar:name, age Person()chaqiruv Obyekt tom Bitta sinfdan ko'p obyekt yaratish mumkin

Person sinfi


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}")
}
  
Obyekt yaratishda new kerak emas: sinf nomi qavs bilan chaqiriladi. Xossaga obyekt.xossa orqali murojaat qilinadi.

Mini-test

Kotlinda Person sinfidan obyekt qanday yaratiladi?

Kotlinda new ishlatilmaydi.
02

Metodlar

Sinf ichidagi funksiyalar

Metodni chaqirish

tom.sayHello() Tom obyektitopiladi Tanabajariladi name: Tomishlatiladi Metod obyektning xossalarini o'qiydi

Person metodlari


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())
}
  
Metod ichida name va age ga tom. yozmasdan murojaat qilinadi: ular shu obyektniki.

Mini-test

Sinf ichidagi funksiya qanday ataladi?

Sinfga tegishli funksiya - metod.
03

Konstruktorlar

Primary, secondary va init

Konstruktor tanlash

Person("Tom",37) Primarykonstruktor Secondary:this(...) init blokiishlaydi Secondary primary ga this orqali bog'lanadi

Primary va secondary


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")
}
  
Sinfda faqat bitta primary konstruktor bo'ladi, secondary esa bir nechta bo'lishi mumkin; primary bor bo'lsa har biri this(...) bilan unga bog'lanadi.

Mini-test

Primary konstruktor bor sinfda secondary konstruktor nima qilishi shart?

Delegatsiya : this(...) orqali amalga oshadi.

Primary va secondary konstruktor

Primary

class Person(val name: String, var age: Int): sinf sarlavhasida, bitta
VS

Secondary

constructor(name: String) : this(name, 18): sinf ichida, bir nechta

Secondary har doim this(...) bilan primary ga tayanadi.

Sinf atamalari. Bosing

Sinf

bosing

Obyektning chizmasi: xossalar va metodlar

Obyekt

bosing

Sinfdan yaratilgan nusxa: Person()

Xossa

bosing

Obyektning ma'lumoti: name, age

Metod

bosing

Sinf ichidagi funksiya: sayHello()

Sinf yaratish bosqichlari

1. Sinf e'loni

class Person va xossalarni yozing.

2. Konstruktor

Boshlang'ich qiymatlarni primary konstruktorga bering.

3. Obyekt va metod

Person(...) yarating va metodini chaqiring.

Konstruktorlar yonma-yon

XususiyatPrimarySecondary
Joyisinf sarlavhasidasinf tanasida
Sonifaqat bittabir nechta
Kalit so'zconstructor ixtiyoriyconstructor majburiy
Bog'lanish-this(...) shart

Pastga bosing: yaratilish tartibi

Obyekt yaratilish tartibi

  1. Person(...) chaqiriladi, mos konstruktor tanlanadi.
  2. Secondary bo'lsa, u this(...) orqali primary ga o'tadi.
  3. init bloki ishlaydi, so'ng konstruktor tanasi bajariladi.

Konstruktorga o'tamiz


class Person {
    var name = "Undefined"
    var age = 18
}
  

Konstruktorga o'tamiz


class Person(var name: String, var age: Int) {
    fun sayHello() {
        println("Hello, $name")
    }
}
  

Sinflar raqamlarda

0
primary konstruktor sinfda
0
konstruktor turi: primary, secondary
0
obyekt yaratishda new kerak emas

Sinfdan istalgancha obyekt yaratish mumkin.

Amaliy topshiriq 20 daqiqa

OsonPerson sinfi: Person sinfini name (standart "Undefined") va age (18) xossalari bilan yozing. Obyekt yaratib, qiymatlarini chiqaring.
O'rtasayHello metodi: Person ga sayHello() va personToString() metodlarini qo'shing va chaqiring.
QiyinPrimary va secondary: Person(name, age) primary konstruktorini va Person(name) secondary konstruktorini (this(name, 18)) yozing. init blokida xabar chiqaring.

Dars xulosasi

Sinf va obyekt

Sinf - chizma, obyekt - nusxa.

Metodlar

Sinf ichidagi funksiyalar, obyekt.metod().

Konstruktorlar

Primary, secondary va this(...), init.

Uyga vazifa: Student sinfi, konstruktorlar va metodlar.

Keyingi dars: Kolleksiyalar

List, MutableList, Set va Map

6-hafta · 16-dars