Android Academy · Oppitunti

Luokat ja oliot

Määritelkää ominaisuuksia ja metodeja sisältäviä luokkia, käyttäkää konstruktoreita, tutustukaa perintään ja rajapintoihin sekä kirjoittakaa Kotlinille ominaista olio-ohjelmointikoodia.

Oppitunti 2/411 vaihetta

Luokat ja oliot on ilmainen Android Academy-oppitunti CoddyKitissä. Tämä on oppitunti 2/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Android Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Android Academy-kurssilla on yhteensä 4 oppituntia.

Mikä on luokka?

Luokka on suunnitelma objektien luomista varten. Se kokoaa toisiinsa liittyvät tiedot (ominaisuudet) ja toiminnallisuuden (funktiot) yhteen.

  • class Dog — määrittää suunnitelman
  • val myDog = Dog() — luo ilmentymän (objektin)

Esimerkkinä User-luokka, joka sisältää nimen, iän ja sähköpostiosoitteen.

Luokan määrittäminen

Kotlin-luokilla on tiivis primäärisen konstruktorin syntaksi:

class User(val name: String, var age: Int) {
    fun greet(): String {
        return "Hi, I'm $name and I'm $age years old."
    }
}

fun main() {
    val user = User("Alice", 28)
    println(user.name)     // Alice
    println(user.age)      // 28
    user.age = 29          // var can be changed
    println(user.greet())
}

Dataclasses

Data class sopii erinomaisesti tietojen säilyttämiseen. Kun lisäätte data-avainsanan, Kotlin luo automaattisesti:

  • equals() / hashCode() — vertailun arvon perusteella
  • toString() — ihmiselle luettavan tulosteen
  • copy() — muokatun kopion luomisen

Data class -esimerkki

Data class -luokat ovat erityisen hyödyllisiä malliohjelmointiobjektien kuvaamisessa:

data class Product(val id: Int, val name: String, val price: Double)

fun main() {
    val p1 = Product(1, "Laptop", 999.99)
    val p2 = p1.copy(price = 899.99) // new copy with changed price

    println(p1)           // Product(id=1, name=Laptop, price=999.99)
    println(p2)           // Product(id=1, name=Laptop, price=899.99)
    println(p1 == p2)     // false (different price)
}

Companion-objektit

Companion object sisältää jäsenet, jotka kuuluvat itse luokalle eivätkä millekään ilmentymälle — vastaavasti kuin static Javassa.

Niihin pääsee käsiksi luokan nimen kautta: User.create()

Companion object -esimerkki

Käyttäkää companion object -rakenteita factory-metodeihin ja vakioihin:

class Counter {
    var count = 0

    fun increment() { count++ }

    companion object {
        const val MAX = 100

        fun create(): Counter = Counter()
    }
}

fun main() {
    val c = Counter.create()
    c.increment()
    c.increment()
    println(c.count)        // 2
    println(Counter.MAX)    // 100
}

Periytyminen

Kotlin-luokat ovat oletusarvoisesti final-luokkia (niitä ei voi laajentaa). Merkitkää luokka open-määreellä, jotta siitä voi periä.

  • open class Animal — luokasta voi periä
  • class Dog : Animal() — perii Animal-luokan
  • override fun sound() — korvaa yliluokan funktion

Periytymisen esimerkki

Rakentakaa yksinkertainen luokkahierarkia:

open class Shape {
    open fun area(): Double = 0.0
}

class Circle(val radius: Double) : Shape() {
    override fun area(): Double = 3.14159 * radius * radius
}

class Rectangle(val w: Double, val h: Double) : Shape() {
    override fun area(): Double = w * h
}

fun main() {
    val shapes: List<Shape> = listOf(
        Circle(5.0),
        Rectangle(4.0, 3.0)
    )
    for (s in shapes) println("Area: ${s.area()}")
}

Object-määritykset

object-määritys luo singletonin eli luokan, jolla on täsmälleen yksi ilmentymä ja joka luodaan laiskasti ensimmäisen käyttökerran yhteydessä.

Käyttäkää sitä apuohjelmiin, hallinnoijiin tai mihin tahansa, jonka tulee sisältää vain yksi ilmentymä.

Pikatarkistus

Minkä ominaisuuden Kotlinin data class tarjoaa automaattisesti?

Kertaus: luokat ja objektit

Olette oppineet Kotlinin olio-ohjelmoinnin rakennuspalikat:

  • Luokat, joissa on primääriset konstruktorit ja jäsenfunktiot
  • data class — automaattisesti luodut equals-, toString- ja copy-metodit
  • companion object — luokkatasoiset (staattiset) jäsenet
  • open-luokat ja override periytymistä varten
  • object-määritykset single toneja varten

Olette valmiita rakentamaan oikeita Android-sovelluksia!

Aloita maksutta

Opi Kotlin tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
36
Oppitunnit
152

Usein kysytyt kysymykset

Onko oppitunti ”Luokat ja oliot” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Android Academy-oppimispolun 3 oppituntia, myös oppitunnin “Luokat ja oliot”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Android Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Luokat ja oliot”?

Määritelkää ominaisuuksia ja metodeja sisältäviä luokkia, käyttäkää konstruktoreita, tutustukaa perintään ja rajapintoihin sekä kirjoittakaa Kotlinille ominaista olio-ohjelmointikoodia. Harjoittelet Android Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Android Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Android Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.

Kuinka kauan ”Luokat ja oliot”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Android Academy-oppitunnilla?

Kyllä. Jokainen Android Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Null-turvallisuus
  2. Luokat ja oliot
  3. Data-luokat ja sealed-luokat
  4. Laajennusfunktiot ja korkeamman asteen funktiot
← Takaisin: Android Academy