728x90

코틀린 강의 시리즈는 이미 자바 문법을 어느정도 안다는 가정하에서 진행을 한다.

따라서 자바 문법을 모르는 상태에서 코틀린의 강의를 들을 수 없으므로 자바부터 배워오길 바란다.

또한 강의의 전반적인 내용은 코틀린에 대한 새로운 문법을 소개하며 자바와 어떻게 다른지를 비교한다.

코틀린은 자바와 같은 jvm족이므로 둘의 협업역시 중요하므로 둘이 어떻게 호환이 되는지도 다루게 된다.

그리고 이 강의는 코틀린 강의지 안드로이드 강의가 아니다. 안드로이드 강의는 알아서하고 코틀린을 적용시키는건 본인 재량이다.


필자는 강의시 원래 IDE에 대한 설명을 최대한 배제하려한다.

필자 블로그의 카테고리는 programming과 usage 둘로 나뉘어 있다.

따라서 프로그래밍은 programming에, IDE및 사용법들은 usage에 나뉘는 방식으로 포스팅을 해왔다.

그런데 코틀린은 조금 상황이 다른게 이미 자바를 알고 있고 자바와 협업한다는 가정하에서 포스팅을 하기에

주변상황에 대한 설명이 들어갈 확률이 매우 높다고 할 수 있다.

따라서 IDE나 사용법에 대한 설명을 같이 포스팅한 경우가 많다. 물론 보는 입장에선 이게 더 도움은 될것이다.

필자가 사용하는 IDE는 IntelliJ가 될것이다. 자바든 코틀린이든 둘다 IntelliJ로 하게 될것이다.


참고:

코틀린 컴파일러 콘솔로 실행하기

코틀린 프로젝트만들기 - InteliiJ

코틀린 프로젝트만들기 - Eclipse


이는 코틀린에만 존재하는 문법이다. sealed class는 만들고나면 인스턴스를 클래스 내부에서만 생성할 수 있다.

더 정확하게 말하면 생성자를 외부에서 호출하는게 불가능해 진다. 아래의 코드를 보자.

package shape

sealed class Circle(x: Int, y: Int) : Shape {

override var x: Int = x
override var y: Int = y
override var width: Int = 0
override var height: Int = 0
val PI = 3.14f

constructor(x: Int, y: Int, width: Int, height: Int) : this(x, y) {
this.width = width
this.height = height
}

override fun getArea(): Float {
return width / 2 * width / 2 * PI
}
}

sealed 지시자의 선언은 클래스 앞에 선언하면 된다.

이제 다른 소스파일에서 인스턴스를 선언하려 해보자.

import shape.Circle

fun main(args: Array<String>) {
var c:Circle = Circle(10,20,30,40)
}

실행하려해도 컴파일이 되지 않는다. 샛엉자를 생성하는게 불가능하기 때문이다.

이는 사실 개념자체는 특별한 개념이 아니다. 필자도 자바에서 이런 기능을 많이 만든적이 있다.

보통 싱글턴패턴을 사용할 경우 일부로 생성자를 만들고 그 생성자에 private를 걸어준다.

기본 생성자는 생성자를 만듦으로서 소멸하며(자바 이야기이다.) 만든 생성자는 private가 걸려있으므로 호출이 불가능하다.

자바에서는 싱글턴을 위해서 이러한 일종의 트릭을 사용했다면 코틀린에서는 이걸 이제 지원해 주는 것이다.

소스파일을 보면 더 명확하게 알 수 있다.


보다시피 생성자가 보이지 않는다. 이는 private를 걸어서 외부의 노출을 막았기 때문이다.


'Programming > Kotlin' 카테고리의 다른 글

[Kotlin-11]vararg(가변인자)  (0) 2017.11.10
[Kotlin-10]object class(익명클래스)  (0) 2017.11.10
[Kotlin-08]data class  (0) 2017.11.10
[Kotlin-07]상속(interface)  (0) 2017.11.10
[Kotlin-06]상속(abstract class)  (0) 2017.11.10

+ Recent posts