[Kotlin] 상속 inheritance

델버·2022년 7월 20일
0

Kotlin

목록 보기
16/18

inheritance

  • Java에서의 상속 개념과 같다. 하지만 코딩 방식과 override 등등 다른 부분이 있어 적어둔다.
// 1
open class Phone (val name : String, val brand : String){
    var capacity :Double= 1000.0
    var device_state : Boolean = false

    open fun setState_On() {
        device_state = true
    }

    fun setCapacity (fileCapacity: Int) {
        capacity -= fileCapacity
    }

}

open class SmartPhone(name: String, brand:String,telecom:String) : Phone (name, brand){ //2
    var telecom_state : Boolean = false;
    override fun setState_On() {
        device_state = true
        telecom_state = true
    }

}

fun main() {
    var phone1 = Phone("folderPhone", "Home")
    var phone2 = SmartPhone("IPhone 11 pro", "Apple", "4G")

    phone1.setState_On()
    phone2.setState_On()
    println(phone2.device_state)
		// true
}
  1. Kotlin에서의 상속은 Java와 달리 처음부터 막혀있다. 어떻게 보면 final이랑 같아보인다. 상속을 하려는 class는 open으로 열어줘야 한다. method에 open이 붙은 것은 override를 막은 것이며 없을 경우 호출은 가능하나 override가 되지 않는다. variable 변수도 마찬가지다.
  2. class 단위의 상속에서 보면, sub class에서 생성자를 정의하고 : super class (parameter) 를 붙인다. super class의 constructor를 붙이는 것과 같다. method와 variable 단위의 override는 Java와 같은데 open 키워드만 붙여줘야 한다는 점만 다르다.

0개의 댓글