PersesTitan(페르) 기술블로그

[Kotlin] 코틀린 기초 - 클래스 및 생성자 (constructor) 본문

Language/Kotlin

[Kotlin] 코틀린 기초 - 클래스 및 생성자 (constructor)

PersesTitan(페르) 2023. 10. 9. 17:02

인스턴스화

코틀린은 자바에서 사용하는 new 키워드를 사용하지 않는 특징이 존재합니다.

코틀린은 new키워드가 애초에 예약어로 잡혀있지 않은데 new키워드를 사용하지 않고 클래스명에다가 매개변수만 넘겨주면 인스턴스화를 할 수 있습니다.

 

Java

Test test = new Test();

Kotlin

val test: Test = Test()

 

주 생성자 (Primary Constructor)

주 생성자는 클래스 명 바로 옆에다가 선언하는데 해당 생성자를 주 생성자라고 부릅니다. 주 생성자는 constructor를 붙쳐 선언하는데 생략이 가능하기도 합니다.

 

  • 예제
class Test constructor(a: Int, b: String) {  

}
  • constructor (생략한 경우)
class Test(a: Int, b: String) {  

}

단, 아래와 같이 주 생성자에 접근제어자를 넣을 경우 constructor를 생략이 불가능합니다.

class Test internal constructor(a: Int, b: String) {  

}

 

주 생성자가 없는 경우

주 생성자가 없는 경우 아무 것도 작성하지 않아도 됩니다.

class Test {  

}

 

변수 바로 선언하기

코틀린에서 매개변수에는 앞에 변수를 선언을 바로 사용이 가능합니다.

해당 방법을 사용하여 보다 코드를 간결하게 사용이 가능해집니다.

 

  • 보통 클래스 변수 초기화하는 방법
class Test(a: Int, b: String) {
    private val a: Int = a
    private val b: String = b
}
  • 변수 바로 선언하는 방법
class Test(private val a: Int, private val b: String) {

}

보조 생성자

코틀린에서는 보조 생성자를 사용하여 자바의 생성자처럼 오버로딩으로 매개변수 값을 달리하여 여려 종류를 정의할 수 있습니다.

자바에서와는 다르게 클래스명 대신 constructor를 사용하여 보조생성자를 정의하는 특징이 존재합니다.

class Test {
    constructor() {
        println("Hello World")
    }
    
    constructor(count: Int) {
        println("Hello World $count")
    }
}
fun main() {
    Test()
    Test(10)
}
// 출력
// Hello World
// Hello World 10

보조 생성자 응용 예제

위에 방식을 응용하여 다음과 같이 응용하여 사용할 수 있습니다. 

참고로 생성자에서 생성자를 불러올때는 콜론(:)를 사용하여 불러올 수 있습니다.

class Test {
    constructor(): this("Hello")
    
    constructor(text: String) {
        println(text)
    }
}
fun main() {
    Test()
    Test("World")
}
// 출력
// Hello
// World