inheritance
- Java에서의 상속 개념과 같다. 하지만 코딩 방식과 override 등등 다른 부분이 있어 적어둔다.
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){
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)
}
- Kotlin에서의 상속은 Java와 달리 처음부터 막혀있다. 어떻게 보면 final이랑 같아보인다. 상속을 하려는 class는
open
으로 열어줘야 한다. method에 open
이 붙은 것은 override를 막은 것이며 없을 경우 호출은 가능하나 override가 되지 않는다. variable 변수도 마찬가지다.
- class 단위의 상속에서 보면, sub class에서 생성자를 정의하고
: super class (parameter)
를 붙인다. super class의 constructor를 붙이는 것과 같다. method와 variable 단위의 override는 Java와 같은데 open
키워드만 붙여줘야 한다는 점만 다르다.