본문 바로가기

Kotlin

Kotlin - 인터페이스 (Interface) https://kotlinlang.org/docs/interfaces.html Interfaces | Kotlin kotlinlang.org Kotlin 에서 인터페이스는 추상 메소드와 구현된 메소드를 모두 가질 수 있다. 상태를 저장 할 수 없다는 점이 추상 클래스(abstract)와 다르다. 인터페이스가 속성을 가질 수는 있지만 속성이 추상화 되어 있거나, 접근자(accessor)를 구현 해야 한다. 선언 과 구현 인터페이스는 interface 키워드를 이용해서 정의하고 클래스에서는 하나 이상의 인터페이스를 구현 할 수 있다. interface MyInterface { fun bar() fun foo() { // body } } class Child: MyInterface { override fun .. 더보기
Kotlin - 속성 (Properties) 속성 선언 하기 Kotlin 클래스에서는 val, var 키워드로 속성을 선언 할 수 있다. val 는 read-only, var는 변경가능한 속성을 선언 할때 사용한다. class Address { val name: String = "Holmes, Sherlock" var zip: String = "123456" var state: String? = null } 속성을 사용하기 위해서는 속성 명을 사용한다. fun copyAddress(address: Address): Address { val result = Address() // there's no 'new' keyword in Kotlin result.name = address.name // accessors are called // ... ret.. 더보기
Kotlin - 상속 (Inheritance) Java의 모든 클래스가 Object의 자식 클래스 이듯이 Kotlin 의 모든 클래스는 Any 의 자식클래스가 된다. Any 클래스는 equals(), hasCode(), toString() 함수를 가지고 있다. 그래서 이 함수들은 Kotlin의 모든 클래스에 존재 한다. 그리고 Kotlin의 모든 클래스는 final로 선언 되기 때문에 상속이 불가능 하다. 혹시 이후 확장을 위해 상속 가능하도록 클래스를 선언 하고 싶다면 open 키워드를 사용해야 한다. open class Base // Class is open for inheritance 명시적으로 부모 클래스를 선언하기 위해서는 class header 부분에 부모 클래스를 작성 하면 된다. open class Base(p: Int) class D.. 더보기
Kotlin - Packages and imports https://kotlinlang.org/docs/packages.html Packages and imports | Kotlin kotlinlang.org package 정의는 소스파일의 맨 위에 작성한다. 소스파일에 작성되는 함수나 클래스 같은 내용들은 모두 정의된 패키지에 포함되게 된다. 따라서 아래 코드에서 printMessage() 함수나 Message 클래스의 풀 네임은 org.example.printMessage, org.example.Message 가 된다. package org.example fun printMessage() { /*...*/ } class Message { /*...*/ } // ... 만약 패키지가 정의되지 않았다면, 파일은 이름이 없는 기본 패키지에 속하게 된다. 기본.. 더보기
Kotlin - Exceptions https://kotlinlang.org/docs/exceptions.html Exceptions | Kotlin kotlinlang.org Exception classes Kotlin의 모든 exception 클래스는 Throwable을 상속하기 때문에, message, stack trace, optional cause를 가진다. 예외를 발생시키기 위해서는 다른 언어들과 마찬가지로 throw 표현식을 사용한다. throw Exception("Hi There!") 이렇게 던져진 예외를 잡기 위해서는 try ... catch ... finally 표현식을 사용한다. try { // some code } catch (e1: SomeException) { // try 블럭의 코드를 실행하다 SomeExcept.. 더보기
Kotlin - Returns and jumps 아래 3키워드 들은 Kotlin에서 코드를 jump 하려고 할때 사용되는 표현식 들이다. return return 이 포함된 가장 가까운 함수의 결과값을 반환한다. break break 가 포함된 가장 가까운 반복문(loop) 가 종료 된다. continue continue 가 포함된 가장 가까운 반복문의 다음 스텝을 진행한다. 위 키워드들은 모두 표현식이기 때문에 다른 표현식의 일부로 작성 될 수도 있다. (Nothing 타입) // 표현식 이기 때문에 이런 표현이 가능하다 val s = person.name ?: return Break and continue labels Kotlin 은 표현식에 label을 붙이는 것이 가능하다. Label을 붙이고 싶은 표현식 앞에 "{label명}@" 형태의 la.. 더보기
Kotlin - 반복문(for, while) https://kotlinlang.org/docs/control-flow.html#for-loops Conditions and loops | Kotlin kotlinlang.org For 문 (For loops) for 문은 C#의 foreach 문과 동일하게 interator를 제공하는 타입이면 사용할 수 있다. 기본 사용 방법은 아래 와 같다. val items = listOf("apple", "banana", "kiwi") for (item in items) println(item) // 코드 부분을 블록으로 감싸서 사용할 수 있다. for (item in items) { println("item is $item") } For 문에 인자로 사용한 타입들 위에서 이야기 한 대로 iterator를 제공.. 더보기
Kotlin - 조건문 https://kotlinlang.org/docs/control-flow.html Conditions and loops | Kotlin kotlinlang.org If 표현식 (expression) Kotlin에서 if 는 표현식 이기 때문에 값을 반환하고, 3항 연산자(condition ? then : else)가 존재하지 않는다. val a = 5 val b = 10 var max = a if (a b) { max = a } else { max = b } println("Max value is $max") // 표현 식 으로서의 if max = if (a > b) a else b println("Max value.. 더보기