세상을 더 편리하게
[Kotlin] 정적 변수와 컴패니언 객체
Programming/Kotlin 2020. 3. 11. 09:54

코틀린 에서는 정적 변수를 사용할 때 static 대신에 컴패니언 객체를 지원한다. class Person{ var id = 0 var name = "Youngdeok" companion object{ var language = "Java" fun work(){ println("Working") } } } fun main() { println(Person.language) Person.language = "Kotlin" println(Person.language) Person.work() println(Person.name) } 위의 예시를 보면 companion object { } 에 있는 프로퍼티와 매소드만 정적으로 사용이 가능하다. [ 정적으로 사용이 가능하다 = 객체를 선언하지 않아도 사용이 가능..

[Kotlin] 위임
Programming/Kotlin 2020. 3. 11. 08:28

interface Car { fun go(): String val abc : Int } class Vanimpl(val power:String): Car{ override fun go(): String = "은 짐을 적재하며 $power 을 가집니다" override val abc: Int = 34 fun notused(): Int = abc + 5 } class SportImpl(val power: String): Car{ override fun go(): String = "은 경주용에 사용되며 $power 을 가집니다" } class CarModel(val model: String, impl: Car): Car by impl{ fun carInfo(){ println("$model ${go()}") ..

[Kotlin] 지연 초기화 ( lateinit / by lazy )
Programming/Kotlin 2020. 3. 10. 08:50

클래스 내 프로퍼티는 반드시 선언과 동시에 초기화를 해줘야 한다. (null 방지를 위해) 하지만, 코딩을 하다보면 코딩 중간에 값이 나와 값을 할당해야 할 때가 있다. 이럴 경우 코틀린에서는 지연초기화를 사용한다. lateinit class Person { lateinit var name: String fun test() { if (!::name.isInitialized) { println("not Initialized") } else { println("initialized") } } } fun main() { val kildong = Person() kildong.test() kildong.name = "Kildong" kildong.test() println("name = ${kildong.nam..

[Kotlin] getter / setter
Programming/Kotlin 2020. 3. 10. 07:20

코틀린은 자바와 다르게 getter 와 setter 를 자동으로 지원해준다. 하지만, 코딩을 하다보면 getter setter 에 손을 대야 하는 일이 있을 수 있다. class Test { var property: Int = 4 set(value) { println("Test Setter") field = value } get() { println("Test Getter") return field + 3 } } fun main() { val cl = Test() println(cl.property) } 다음과 같이 getter와 setter를 조절 할 수 있다. 여기서 눈여겨 봐야 할것은 field 라는 변수(?)이다. field는 getter / setter 에서의 자기주체에 해당한다. 위의 코드를 ..