Kotlin Öğreniyorum, Companion Object ve Data Class — Part 3

Buse Tekin Aydın
Sep 5, 2018 · 1 min read

Variables

2 tür değişken vardır

var = mutable yani değişebilir

val =immutable yani değişemez

Bu javadaki final keywordüne benzerdir.

İmmutable objeler thread safedir.

Companion Object

Kotlinde static properties ve fonsiyon yaratamayız ama companion object yaratabiliriz.Bu objenin içine sınıfımızın içinde static olmasını istediğimiz properitsleri, constantları, fonksiyonları tanımlayabiliriz.

örnek:

companion object {

private var instance: EventManger? = null

private val staticName
= "bu string static"

fun
getInstance(): EventManger {
if (instance == null) {
instance = EventManger()
}
return instance as EventManger
}
}

Yukarıda companion object ‘den sonra isim de verebiliriz.İsim verirsek

sınıfAdı.CompanionObjectAdı şeklinde ulaşabilir ,isim vermezsekte sınıfAdı.Companion yazarak ulaşırız.

Data Class nedir

Data class bir class tanımlamasıdır , aşağıdaki fonksiyoneliteleri çok kısa bir şekilde içine alır (otomatik tanımlar):

  • constructor
  • Fields
  • Getter ve setter fonksiyonları
  • hashCode(), equals() ve toString() fonksiyonları

Class tanımalamızda data keywordünü kullandığımızda Kotlin otomatik olarak fieldlara ulaşılabilcek getter setterları ,hashCode(), equals(), toString(), copy() ve componentN() fonksiyonlarını yaratır.

Örnek tanımlama:

data class Book(val name: String, val author: String, var page: Int)

copy() Fonksiyonu

immutable tanımlanan bir data classının bazı alanlarını değiştirmek istersek bunu kullanabilirz.

Örnek:

val : adventureBook = Book("Harry Potter ", "j. k. rowling", 700)val fantasticBook= adventureBook.copy(page = 650)

Burda adventureBook val olarak tanımlanmış ve Book sınıfından bir nesne atanmış.val tipli yani değiştirilemez tipli olduğu için copy() fonksiyonunu kullanarak bazı alanlarını değiştirebiliriz.

componentN() fonksiyonu

Bu da data classımınızın propertilerine ulaşmamızı sağlar

örneğin yularıdaki adventureBook classının propertilerine şu şekilde ulaşabiliriz,

adventureBook.component1() // nameadventureBook.component2()//authoradventureBook.component3() //page

Buse Tekin Aydın

Written by

https://github.com/busetekin

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade