Seul Lee

Mathpresso 서버 개발자

Navigation
 » Home
 » Github
 » XML Feed

Kotlin basic

10 Nov 2018 » other



코틀린 기본 문법


변수와 상수

var a: Int = 1
val b: Int = 2

변수는 var, 상수는 val로 선언


함수

fun hello(string: String): Unit {
    println(string)
}

반환 값이 Unit인 경우 생략 가능


컬렉션

배열

val array: Array<Int> = arrayOf(1, 2, 3)
val array = arrayOf(1, 2, 3)
array[0] = 3 // [3, 2, 3] 


리스트

val list: List<Int> = listOf(1, 2, 3)
val list = listOf(1, 2, 3)


변경 가능한 리스트

val list = mutableListOf(1, 2, 3)

list.add(4)
list.removeAt(0)


val map = mapOf("a" to 1, "b" to 2, "c" to 3)


변경 가능 맵

val map = mutableMapOf("a" to 1, "b" to 2, "c" to 3)
map["a"] = 4


집합

val set = setOf(1, 2 ,3)


수정 가능한 집합

val set = mutableSetOf(1, 2, 3)
set.add(4)
set.remove(1)


제어문

if

var a = 5
var b = 0

if (a == 2) {
    b = 1    
} else {
    b = 2
}


for

val array = arrayOf(1, 2, 3, 4)

for (num in array) {
    println(num)
}


while

var a = 0
while (x < 10) {
    println(x)
    x++
}


클래스

선언

class God {

}

val god = God()


생성자

class God {
    constructor(power: String) {
        println(power)
    }
}


프로퍼티

val god = God("슈퍼 파워")
god.power = "?"
pringln(god.power)

코틀린에서는 게터, 세터없이 프로퍼티를 이용해서 접근


접근 제한자

  • public
  • private
  • protected
  • internal(같은 모듈 내에서만)


상속

open class God {

}

class DemiGod: God() {

}

open 키워드가 없으면 상속이 불가능


내부 클래스

class Outer {
    var a = 1

    inner class Inner {
        a = 10
    }
}

inner 라는 키워드를 사용해야 Outer 클래스의 변수에 접근이 가능하다.


추상 클래스

abstract class Abs {
    abstract fun a()
}


인터페이스

선언

interface Clickable {
    fun click()
}


구현

class Button: Clickable {
    override fun click() {
        println("클릭")
    }
}


기타

?

val a: String? = null

코틀린은 기본적으로 null을 허용하지 않지만 ?를 사용하면 null을 허용하도록 할 수 있다.


!!

변수 뒤에 !! 를 추가하면 null값이 아님을 보증한다.


lateinit

lateinit var a: String

a = "초기화"