Class 생성과 위임

2021. 4. 23. 19:12Kotlin/문법

class Person(

        val name :String= “nobody”,

        var age :Int

) {

    var singleYn = “Y”;

    init {

        Log.i(“KMJ”, “init block #1$name / $age / $singleYn”);

    }

    constructor(name :String, age :Int, height :Float) :this(name,age)

    {

        Log.i(“KMJ”, “sub - constructor block $name / $age / $height / $singleYn”);

    }

    init {

        Log.i(“KMJ”, ”init block #2$name / $age / $singleYn”);

        singleYn = “N”;

    }

}


    val person = Person(“MIJIN”, 27);

    val person2 = Person(“MIJIN”, 27, 166.0f);

    val person3 = Person(age = 27);

 

  • property로 선언 : 클래스 primary constructor에 val or var 키워드 사용 시 클래스의 property로 사용

cf> property 생성없이 인자로 값만 넘겨받고 싶을 경우 초기화는 다음과 같이 진행한다.

class Person(name : String = “nobody”, age : Int){

    val pName = name;

    var pAge = age;

}

 

  • sub constructor 선언 : 직간접적으로 primary constructor를 위임해야 함
  • 초기화 순서 : primary constructor(property와 init block 나열순대로 진행) → sub constructor

2020-10-29 15:00:35.238 11203-11203/com.example.kotlinstudy I/KMJ: init block #1 MIJIN / 27 / Y
2020-10-29 15:00:35.238 11203-11203/com.example.kotlinstudy I/KMJ: init block #2 MIJIN / 27 / Y
2020-10-29 15:00:35.238 11203-11203/com.example.kotlinstudy I/KMJ: init block #1 MIJIN / 27 / Y
2020-10-29 15:00:35.238 11203-11203/com.example.kotlinstudy I/KMJ: init block #2 MIJIN / 27 / Y
2020-10-29 15:00:35.238 11203-11203/com.example.kotlinstudy I/KMJ: sub-constructor block MIJIN / 27 / 166.0 / N
2020-10-29 15:00:35.238 11203-11203/com.example.kotlinstudy I/KMJ: init block #1 nobody / 27 / Y
2020-10-29 15:00:35.238 11203-11203/com.example.kotlinstudy I/KMJ: init block #2 nobody / 27 / Y

 

 

 

 

 

 

 

'Kotlin > 문법' 카테고리의 다른 글

by  (0) 2022.02.24
기본 문법 간단 리뷰  (1) 2021.08.11
Class 상속  (0) 2021.04.23