5. 클래스
1) 선언 및 생성
- 선언 형식: class 클래스명 {}
class Class{
val property = 1
fun function() = println("function")
}
fun main() {
val cls = Class()
println(cls.property)
cls.function()
}
// 결과
1
function
2) 주 생성자
- 생성자: 클래스를 통해 객체를 생성하기 위한 함수
- 코틀린에서는 주 생성자와 보조 생성자로 구분
- 주 생성자는 클래스 선언부에 작성하며 클래스당 하나의 주 생성자만 정의 가능하다. (필수 사항은 아님)
class Class1 {}
class Class2() {}
class Class3 constructor() {}
class Class4 constructor(arg1: String, arg2: Int){
val arg1 = arg1
val arg2 = arg2
fun pr() = println("$arg1, $arg2")
}
class Class5 constructor(arg1: String, arg2: Int){
val arg1 = arg1
val arg2 = arg2
init{
println("$arg1, $arg2")
}
}
class Class6 constructor(val arg1: String, val arg2: Int){
init {
println("$arg1, $arg2")
}
}
fun main() {
val cls1 = Class1()
val cls2 = Class2()
val cls3 = Class3()
val cls4 = Class4("4", 4)
cls4.pr()
val cls5 = Class5("5", 5)
val cls6 = Class6("6", 6)
}
// 결과
4, 4
5, 5
6, 6
3) 보조 생성자
- 보조 생성자는 클래스 내에 constructor 예약어로 선언한다.
- 보조 생성자를 선언하면 주 생성자를 선언하지 않아도 된다.
- init{} 초기화 블럭은 보조 생성자 블록 수행 전에 먼저 수행된다.
class Cls1{
constructor(){}
}
class Cls2{
constructor(){}
constructor(arg1: String, arg2: Int){
this.arg1 = arg1
this.arg2 = arg2
}
var arg1: String = "a"
var arg2: Int = 0
fun pr() = println("$arg1, $arg2")
}
class Cls3 constructor(val name: String){
constructor(name: String, age: Int) : this(name) {
println("$name, $age")
}
}
fun main() {
val cls1 = Cls1()
val cls2_1 = Cls2()
val cls2_2 = Cls2("some", 3)
cls2_1.pr()
cls2_2.pr()
val cls3_1 = Cls3("john")
val cls3_2 = Cls3("james", 10)
}
// 결과
a, 0
some, 3
james, 10
'프로그래밍 > Kotlin' 카테고리의 다른 글
[Kotlin 요약 정리] 7. 상속 (0) | 2019.04.09 |
---|---|
[Kotlin 요약 정리] 6. 프로퍼티 (0) | 2019.04.09 |
[Kotlin 요약 정리] 4. 흐름 제어 구문과 연산자 (0) | 2019.04.08 |
[Kotlin 요약 정리] 3. 데이터 타입 (0) | 2019.04.08 |
[Kotlin 요약 정리] 2. 변수와 함수 (0) | 2019.04.08 |