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.
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ää suunnitelmanval 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 perusteellatoString()— ihmiselle luettavan tulosteencopy()— 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-luokanoverride 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-metoditcompanion object— luokkatasoiset (staattiset) jäsenetopen-luokat jaoverrideperiytymistä vartenobject-määritykset single toneja varten
Olette valmiita rakentamaan oikeita Android-sovelluksia!
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
- Null-turvallisuus
- Luokat ja oliot
- Data-luokat ja sealed-luokat
- Laajennusfunktiot ja korkeamman asteen funktiot