일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 브루트포스
- BFS
- 컴퓨터 비전
- 2022 KAKAO BLIND RECRUITMENT
- level2
- 프로그래머스
- kotlin
- 백준
- 2023 KAKAO BLIND RECRUITMENT
- 유니온파인드
- lv2
- 2021 KAKAO BLIND RECRUITMENT
- Lv3
- 2018 KAKAO BLIND RECRUITMENT
- 삼성SW역량테스트
- 컴퓨터비전
- 코틀린
- 호이스팅
- 누적합
- 동적계획법
- VAR
- 자바스크립트
- JavaScript
- const
- 자바
- js
- level3
- java
- 구현
- dp
Archives
- Today
- Total
코드를 느껴바라
kotlin : 클래스(Class)의 생성자 본문
반응형
Kotlin 클래스 초기화의에는 여러 방법이 존재한다.
Kotlin에서는 클래스 초기화를 위해 constructor, init, secondary constructor를 유연하게 조합할 수 있다. 각각의 개념을 명확히 이해하고 올바르게 사용하는 것이 유지보수성과 가독성을 높이는 데 도움이 된다고 하여 정리하여 포스팅을 해본다.
1. 주 생성자 (Primary Constructor)
Kotlin의 주 생성자는 클래스 선언부에서 함께 정의된다. 값을 객체 외부에서 전달받아 클래스 내부 프로퍼티로 초기화하는 데 사용된다.
class Person(val name: String, val age: Int)
- val 혹은 var 키워드를 사용하면 자동으로 프로퍼티가 정의된다.
- constructor 키워드는 생략 가능하다.
명시적으로 작성할 수도 있다:
class Person constructor(val name: String, val age: Int)
2. 초기화 블록 (init)
init 블록은 객체가 생성되자마자 실행되는 블록이다. 주 생성자에서 받은 값을 바탕으로 로직을 추가하거나 초기화 작업을 수행할 수 있다.
class Person(val name: String, val age: Int) {
init {
println("init 블록 실행: 이름은 $name, 나이는 $age")
}
}
특징
- 생성자 파라미터에 접근 가능
- 클래스 내부에 여러 개의 init 블록을 둘 수도 있으며, 위에서 아래 순서대로 실행된다.
3. 보조 생성자 (Secondary Constructor)
주 생성자 외에도 보조 생성자를 통해 다양한 방식으로 객체를 생성할 수 있다. constructor 키워드를 사용해서 클래스 본문 내부에 정의한다.
class Person {
var name: String
var age: Int
constructor(name: String, age: Int) {
this.name = name
this.age = age
}
}
주 생성자와 병행 사용
보조 생성자가 정의된 경우에는 반드시 주 생성자를 호출해야 한다.
class Person(val name: String) {
var age: Int = 0
constructor(name: String, age: Int) : this(name) {
this.age = age
}
}
4. 실행 순서 요약
class Example(val data: String) {
init {
println("init 블록: $data")
}
constructor(data: String, extra: String) : this(data) {
println("보조 생성자 실행: $extra")
}
}
val ex = Example("hello", "extra")
출력:
init 블록: hello
보조 생성자 실행: extra
- 주 생성자 실행
- init 블록 실행
- 보조 생성자 실행
5. 정리 비교표
항목 설명
constructor | 외부에서 값을 받아오는 생성자 정의 방법 |
init 블록 | 생성 직후 초기화 로직을 수행하는 블록 |
보조 생성자 | 주 생성자 외의 추가 생성자, 반드시 주 생성자 호출 필요 |
선언 위치 | constructor는 선언부, init은 클래스 본문 내부 |
매개변수 전달 | constructor만 가능, init은 전달된 값만 사용 가능 |
사용 용도 | 파라미터 설정, 유효성 검사, 로그 출력 등 |
마무리
Kotlin은 Java보다 훨씬 더 간결하고 유연하게 객체를 초기화할 수 있도록 설계되었다. init, primary constructor, secondary constructor의 역할을 명확히 구분하고 목적에 맞게 사용하는 것이 중요하다.
반응형
'개발 > 앱(Android)' 카테고리의 다른 글
kotlin : Sequence 뭐가 다르고 왜 쓰는 건지? (0) | 2025.04.17 |
---|---|
kotlin : field란? (5) | 2025.03.20 |
kotlin : 코틀린 변수 및 상수 (0) | 2025.03.13 |