Kotlin Class, 상속

2020. 11. 5. 14:36모바일/Android_Kotlin

Class 초기화

class Person (name : String ){
    var name = name;
}

  • 클래스를 상속하는 경우 반드시 부모 클래스의 생성자를 호출해야 한다. 위에서는 AppCompatActivity의 기본 생성자를 호출하는 것을 확인할 수 있다.
  • 부모 클래스의 생성자가 여러 형태일 경우, 클래스 선언부에서 부모 클래스의 생성자를 호출하는 대신 별도의 생성자 선언에서 부모 클래스의 생성자를 호출하도록 구현할 수 있다.
class HelloActivity : View{
    constructor(context: Context) : super(context){

    }
}

Class Init

// 
class Student(name : String){
    init{
        println(name)
    }
}

== 

class Student{
    constructor(name : String){
        println(name)
    }
}

==

class hello (val name : String)
  • 코틀린 기본생성자는 코드를 포함할 수 없다..
  • 초기화 부분을 여기서 하라고 선언한다.
  • 자바에서는 생성자 영역에서 변수를 바로 초기화할 수 있지만 기본 생성자가 클래스 옆에 붙기 때문에 초기화를 어떻게 해야 할지 몰라서 init {}이라는 영역에서 초기화를 해야 한다. (두 번째 소스처럼 init 없이 직접 하여도 된다. ) 자바에서 하듯이 this.field로 접근이 가능하다 그렇다면 한두 개짜리를 짜도 계속 init을 써야 하는 것일까? 이러한 생각에 코틀린에서는 좀 더 색다른 방법을 제공합니다.

기본생성자+ 보조생성자

class Person (var name : String ){
    constructor(name:String , age : Int) : this(name){
    }
}


보조생성자

class Person {
    var name : String = "";
    var age : Int? = null;

    constructor( name : String ){
        this.name = name;
    }

    constructor(name:String , age : Int){
        this.name = name;
        this.age = age;
    }
}

출처 : https://junghun0.github.io/2019/07/22/kotlin-interface/