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