Kotlin
코틀린에서 함수 재정의(overriding)하기
kyd0822
2024. 11. 6. 12:27
코틀린에서도 자바와 같이 함수를 재정의(overriding) 할 수있습니다.
아래의 정리된 내용은 코틀린에서 함수를 재정의 방법을 정리한 내용이다.
* 함수재정의(overriding)
// super class
open class SmartDevice(val name: String, val category: String) {
open fun turnOn() {
}
open fun turnOff() {
}
}
class SmartTvDevice(deviceName: String, deviceCategory: String) :
SmartDevice(name = deviceName, category = deviceCategory) {
override fun turnOn() {
// super.turnOn()
println("SmartTV Turn On")
}
override fun turnOff() {
// super.turnOff()
println("SmartTV Turn Off")
}
}
부모 클래스(슈퍼클래스)의 함수를 재정의 할 때는 재정의가 필요한 부모클래스 함수의 이름 앞에 open 키워드를 써준다.
자식 클래스(서브클래스) 앞에는 override 키워드를 입력하면 재정의를 할수 있다.(자바의 override와 같음)
위 소스코드에 자식 클래스의 오버라이드한 함수안에 주석을 제거 할 경우(super.turnOn() or super.turnOff()) 부모 클래스의 함수를 실행 후 자식 클랙스의 함수를 실행한다. super키워드를 사용하지 않을 경우 부모 함수내의 로직은 무시된다.
* 서브클래스에서 슈퍼클래스 속성 재정의
코틀린에서는 속성값에도 재정의를 사용할수 있다.
// super class
open class SmartDevice(val name: String, val category: String) {
open val deviceType: String = "Unknow"
}
// sub class
class SmartTvDevice(deviceName: String, deviceCategory: String) :
SmartDevice(name = deviceName, category = deviceCategory) {
override val deviceType: String = "Smart TV"
}
코틀린에서 함수 또는 속성값을 재정의하는 것을 알아보았다.
여기서 핵심으로 기억해야 할 것들은 재정의하고자 하는 부모의 함수 또는 속성값 앞에 "open " 키워드를 입력해줘야한다.
또한 재정의하는 자식 클래스의 함수(또는 속성값)앞에 "override" 키워드를 입력해준다.