반응형
주 생성자가 없는 클래스
: 주 생성자가 없으므로 this를 이용한 주 생성자 호출 불 필요
class MyClass{
//보조 생성자 정의
constructor(){
println("보조 생성자(본인)만 호출")
}
//this()는 앞에서 정의한 보조 생성자를 호출
constructor(arg: Int) : this(){
println("다른 보조 생성자를 호출하며 매개변수도 호출($arg)")
}
}
fun main(){
var my1 = MyClass()
var my2 = MyClass(123)
}
출력 결과
보조 생성자(본인)만 호출
보조 생성자(본인)만 호출
다른 보조 생성자를 호출하며 매개변수도 호출(123)
반응형
주 생성자가 존재하는 클래스
class MyClassWithPrimaryConstructor(){ //기본생성자 생성
/* 보조 생성자를 정의할 때 주 생성자가 있는 경우 반드시 this를 통해 주 생성자를 호출해야 한다.*/
constructor(arg: Int) : this(){
println("주 생성자를 호출하며 매개변수도 호출($arg)")
}
constructor(arg1: Int, arg2: Int) : this(arg1){
println("매개변수 두 개인 생성자 호출($arg1, $arg2)")
}
}
fun main(){
var my3 = MyClassWithPrimaryConstructor()
var mv4 = MyClassWithPrimaryConstructor(111)
var mv5 = MyClassWithPrimaryConstructor(333,222)
}
출력 결과
주 생성자를 호출하며 매개변수도 호출(111)
주 생성자를 호출하며 매개변수도 호출(333)
매개변수 두 개인 생성자 호출(333, 222)
보조 생성자를 활용한 예시
class Person5(var name: String, var age: Int, val gender: String){
var job: String = "Unknown"
var salary: Int? = null
constructor(name: String, age: Int, gender: String, job: String) : this(name, age, gender){
println("직업까지 정의하는 생성자 호출")
this.job = job;
}
constructor(name: String, age: Int, gender: String, job: String, salary: Int) : this(name, age, gender, job){
println("직업과 연봉까지 정희하는 생성자 호출")
this.salary = salary // this.salary에 ()로 전달받은 값을 초기화한다.
}
}
fun main(){
var p5 = Person5("짱구", 32, "남성")
println("${p5.name} ${p5.age} ${p5.gender} ${p5.job} ${p5.salary}")
p5 = Person5("스폰지밥", 12, "남성", "요리사")
println("${p5.name} ${p5.age} ${p5.gender} ${p5.job} ${p5.salary}")
p5 = Person5("브레드숑", 321, "남성", "의사", 30000000)
println("${p5.name} ${p5.age} ${p5.gender} ${p5.job} ${p5.salary}")
}
출력 결과
짱구 32 남성 Unknown null
직업까지 정의하는 생성자 호출
스폰지밥 12 남성 요리사 null
직업까지 정의하는 생성자 호출
직업과 연봉까지 정희하는 생성자 호출
브레드숑 321 남성 의사 30000000
반응형
'프로그래밍 > Kotlin' 카테고리의 다른 글
[코틀린 / Kotlin] getter와 setter (0) | 2022.10.20 |
---|---|
[코틀린 / Kotlin] open class, private , protected 속성 설정 (0) | 2022.10.20 |
[코틀린 / Kotlin] class 정의 , inti 블록 (0) | 2022.10.19 |
[코틀린 / Kotlin] 반복문(while문, do-while문, for문 , break, continue) (0) | 2022.10.19 |
[코틀린 / Kotlin] 조건문 (if 문, when case 문) (0) | 2022.10.19 |