클래스(Class)
코틀린에서 클래스는 class 키워드를 사용하며 클래스 이름, 해더, 바디로 구성되며 다음과 같은 특징을 지닌다.
또한, 클래스의 해더와 바디는 생략이 가능하다.
클래스는 객체를 생성해 사용하지만 코틀린의 클래스는 객체를 생성할 때 new 키워드를 사용하지 않는다.
생성자(Constructor)
코틀린의 클래스는 하나의 주 생성자(primary constructor) 와 하나 이상의 보조 생성자(secondary constructor)를 가질 수 있다.
주 생성자(Primary constructor)
주 생성자는 constructor 키워드를 사용하지만, 이를 생략하고 사용할 수 있다.
또한, 필요하다면 매개변수를 선언할 수도 있다.
// constructor 키워드를 사용한 class
class Person constructor(firstName: String) {
// body
}
// constructor 키워드를 생략한 class
class Person(firstName: String){
// body
}
주 생성자 내부에는 어떠한 코드도 들어갈 수 없지만, init 키워드를 이용해서 초기화 코드를 작성할 수 있다.
init 키워드로 작성한 영역은 클래스의 객체를 생성할 때 자동으로 실행되며, init 영역의 작성은 필수사항은 아니다.
class Person(firstName: String){
init {
println("Initialization code")
}
}
생성자의 매개변수를 클래스의 멤버 변수로 선언하고 싶은 경우에는
- init 블록에서 매개변수를 멤버변수에 대입하면 가능하다.
- var, val 키워드를 매개변수 선언 시 붙여주면 가능하다.
// init 블록을 통해서 선언하는 법
class Person(firstName: String){
val firstName: String // 멤버 변수
init{
this.firstName = firstName // 매개변수를 멤버 변수에 대입
}
// val 키워드를 이용하여 선언하는 법
class Person2(val firstName: String){
// body
}
보조 생성자(Secondary constructor)
보조 생성자는 클래스 본문에 constructor 키워드로 선언할 수 있으며 여러 개를 추가할 수 있다.
기본적으로 보조 생성자또한 생성자이기 때문에 객체 생성시 자동으로 실행되게 된다.
보조 생성자나 주 생성자 둘 중 하나만 선언 하면 상관 없지만, 모두 선언하게 된다면 생성자끼리 연결이 필요하다.
연결시에는 this() 구문을 이용하면 된다.
class Person(name: String){
constructor(name: String, count: Int): this(name){
}
}
fun main(){
val user = User("Tom", 10)
}
'Languages > Kotlin' 카테고리의 다른 글
| [Kotlin] 데이터 클래스 (1) | 2023.04.18 |
|---|---|
| [Kotlin] 상속, 오버 라이딩, 접근 제한자(Inheritance, Overriding, Modifier) (0) | 2023.04.18 |
| [Kotlin] 제어문(If, When, For, While) (0) | 2023.03.16 |
| [Kotlin] 코틀린의 컬렉션(List, Set, Map) (0) | 2023.03.15 |
| [Kotlin] 배열(Arrray) (0) | 2023.03.14 |
댓글