지난 포스팅에서는 코틀린 클래스의 기초인 기본 생성자와 클래스 변수를 선언하는 방법에 대해 알아보았습니다. 클래스를 설계하다 보면 상황에 따라 매개변수를 다르게 받는 여러 개의 생성자가 필요한 경우가 생깁니다. 이를 ‘생성자 오버로딩(Constructor Overloading)’이라고 합니다.
![[Kotlin][8]코틀린 클래스 생성자 오버로딩 – constructor 1 코틀린에서 클래스 생성자 오버로딩](https://pormula.com/wp-content/uploads/2026/01/Kotlin8코틀린-클래스-생성자-오버로딩-–-constructor_001.jpg)
일반적으로 생성자 오버로딩은 매개변수의 타입이나 개수에 따라 구분됩니다. 코틀린에서도 이 개념은 동일하지만, ‘기본 생성자(Primary Constructor)’와 ‘보조 생성자(Secondary Constructor)’를 정의하는 문법이 조금 독특합니다. 기본 생성자는 클래스 이름 옆에 선언하고 init 블록을 사용하며, 보조 생성자는 constructor 키워드를 사용합니다. 구체적인 구현 방법을 예제를 통해 살펴보겠습니다.
코틀린 생성자 오버로딩 방법 – constructor
코틀린에서 보조 생성자를 만들 때는 클래스 본문 내에 constructor 키워드를 사용합니다. 이때 주의할 점은 보조 생성자의 매개변수 구성이 기존 생성자와 중복되지 않아야 한다는 것입니다.
보조 생성자를 정의할 때는 반드시 기본 생성자를 호출해 주어야 합니다. 콜론(:) 뒤에 this() 키워드를 사용하여 기본 생성자에 필요한 인자를 전달함으로써 호출할 수 있습니다. 아래 코드는 보조 생성자를 구현한 간단한 예시입니다.
class Test() {
init {
println("이게 바로 기본 생성자 입니다")
}
constructor(num: Int) : this() {
println("이건 보조 생성자 $num 번 입니다.")
}
}
![[Kotlin][8]코틀린 클래스 생성자 오버로딩 – constructor 2 생성자 오버로딩을 진행한 모습](https://pormula.com/wp-content/uploads/2026/01/Kotlin8코틀린-클래스-생성자-오버로딩-–-constructor_002.png)
위와 같이 클래스를 구성하고 인스턴스를 생성하면, 기본 생성자(init 블록)가 먼저 실행된 후 보조 생성자의 코드가 실행됩니다. 실행 결과는 아래와 같습니다.
![[Kotlin][8]코틀린 클래스 생성자 오버로딩 – constructor 3 실행 콘솔 결과](https://pormula.com/wp-content/uploads/2026/01/Kotlin8코틀린-클래스-생성자-오버로딩-–-constructor_003.png)
출력 내용을 보면 기본 생성자의 메시지가 먼저 나타나고, 그 뒤를 이어 보조 생성자의 메시지가 출력되는 것을 확인할 수 있습니다.
참고로 보조 생성자만 정의하고 기본 생성자를 명시하지 않아도 컴파일러가 자동으로 생성해 주지만, 코틀린의 장점을 살리기 위해서는 기본 생성자를 명시적으로 사용하는 것이 권장됩니다.
만약 기본 생성자가 매개변수를 받는 구조라면, 보조 생성자에서 this(인자) 형태로 해당 값을 넘겨주어야 합니다. 한 가지 유의할 점은 보조 생성자의 매개변수에는 val이나 var 키워드를 직접 사용할 수 없다는 것입니다. 클래스 속성으로 저장하고 싶다면 기본 생성자로 전달하거나 본문 내에서 별도로 할당해야 합니다.
class Test(number: Int) {
init {
println("이게 바로 기본 생성자 입니다. 전달받은 숫자: $number")
}
constructor(num: Int, text: String) : this(num) {
println("이건 보조 생성자 $text 입니다.")
}
}
![[Kotlin][8]코틀린 클래스 생성자 오버로딩 – constructor 4 constructor를 통한 기본 생성자 호출 예시](https://pormula.com/wp-content/uploads/2026/01/Kotlin8코틀린-클래스-생성자-오버로딩-–-constructor_004.png)
위 코드를 실행하면 보조 생성자로 전달된 num 값이 기본 생성자의 number로 성공적으로 전달되는 것을 볼 수 있습니다.
![[Kotlin][8]코틀린 클래스 생성자 오버로딩 – constructor 5 기본 생성자에 매개변수가 전달된 콘솔 화면](https://pormula.com/wp-content/uploads/2026/01/Kotlin8코틀린-클래스-생성자-오버로딩-–-constructor_005.png)
오늘은 코틀린의 constructor 키워드를 활용한 생성자 오버로딩에 대해 알아보았습니다. 자바와 같은 다른 언어와 달리 코틀린은 기본 생성자와 보조 생성자의 역할을 명확히 구분하여 코드의 구조를 한눈에 파악하기 쉽게 만들어 줍니다.
클래스 설계 시 생성자가 많아지더라도 이 규칙을 활용하면 어떤 생성자가 핵심적인 역할을 하는지 관리하기 용이합니다. 다음 포스팅에서는 코틀린에서 데이터를 다루는 데 특화된 ‘데이터 클래스(Data Class)’에 대해 알아보겠습니다.
긴 글 읽어주셔서 감사합니다. 궁금한 점은 댓글로 남겨주세요!
다른 글 읽기
이 글의 저작권은 전적으로 작성자인 P_Emblem에게 있으며 허락 없는 무단 사용을 금합니다.