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" 키워드를 입력해준다.