Kotlin 문법: "오버라이드"

SHY(code poet)·2024년 2월 19일

✨Kotlin에 관하여✨ 

목록 보기
20/36

오버라이드(무효로하다): 상속받은 프로퍼티와 메서드의 재정의

  • 상속받은 부모 클래스의 프로퍼티와 메서드 중에 자식 클래스에서는 다른 용도로 사용해야 하는 경우가 있습니다.
  • 앞의 예제에서 Parent 클래스의 메서드를 sayHello로, Child 클래스의 메서드를 myHello라 했는데 이런 경우가 오버라이드(Override)가 필요한 대표적인 경우이다.
    -> 즉, 오버라이드로 Child 클래스의 메서드도 sayHello라고 하는 것이 의미상 더 적합하다.
    이처럼 자식 클래스에서 부모 클래스와 동일한 이름의 메서드나 프로퍼티를 사용할 필요가 있을 경우에 override 키워드를 사용해서 재정의할 수 있다.
  • 오버라이드할 때는 프로퍼티나 메서드도 클래스처럼 앞에 open을 붙여서 상속할 준비가 되어 있어야 한다.

a. 메서드 오버라이드

  • 상속할 메서드 앞에 open 키워드를 붙이면 오버라이드할 수 있지만, open 키워드가 없는 메서드는 오버라이드할 수 없다.
  • 클래스의 세컨더리 생성자를 여러 개 중복해서 사용할 수 있는 것도 오버라이딩이 가능하기 때문이다.

open class BaseClass {
open fun opened() {
}
fun notOpened(){
}
}

class ChildClass: BaseClass(){
override fun opened(){ // 만약 override하지 않았다면 다른 함수명을 적었었어야 함,
}
override fun notOpened(){ // notOpened 메서드는 open 키워드가 없으므로 잘못된 사용입니다.
}
}
b. 프로퍼티 오버라이드

  • 매서드 오버라이드처럼 프로퍼티 역시 open으로 열려 있어야만 오버라이드할 수 있다.

open class BaseClass2 {
open var opened: String = "I am"
}

class ChildClass2: BaseClass2(){
override var opened: String = "You are"
}

profile
진정한 개발자는 코드를 두려워하지 않는다. 오히려 코드가 그를 두려워한다.

0개의 댓글