관리 메뉴

The Nirsa Way

[Kotlin] 상속과 오버라이딩 (open, override) 본문

Development/Kotlin

[Kotlin] 상속과 오버라이딩 (open, override)

KoreaNirsa 2025. 8. 22. 11:16
반응형
※ 해당 코틀린 포스트들은 기본적으로 자바를 알고 있다는 가정하에 간단히 예제만 제공하여 설명됩니다.

 

코틀린의 상속과 오버라이딩

코틀린의 클래스와 메서드는 기본적으로 final 입니다. 그렇기에 상속과 오버라이딩이 불가하므로 상속과 오버라이딩을 허용하기 위해서는 open을 사용해야 합니다.

open class Animal { // 상속 허용
    open fun sound() { // 오버라이딩 허용
        println("Some generic animal sound")
    }
}

 

1. 상속

자바에서는 extends 키워드를 사용하여 상속을 하지만, 코틀린에서는 : 기호를 사용하여 부모 클래스를 상속 받습니다. 아래와 같이 Dog 클래스와 Cat 클래스의 뒤에 : Animal()을 붙여 Animal 클래스의 생성자를 호출하도록 하여 상속받는 구조 입니다.

Dog와 Cat은 상속을 받는 입장이므로 open이 필요하지 않습니다.

open class Animal {
    open fun sound() {
        println("Some generic animal sound")
    }
}

class Dog : Animal() {}
class Cat : Animal() {}

 

2. 오버라이딩

자바의 경우 변수명, 매개변수 등을 똑같이 작성 후 @Override 어노테이션을 사용하였다면, 코틀린에서는 메서드 앞에 override만 붙여주면 됩니다. 자바는 어노테이션에 의존하여 개발자의 실수가 발생할 수 있지만, 코틀린의 경우 상속 후 같은 필드가 override를 사용하지 않는다면 컴파일 에러를 발생 시킵니다. 즉, 문법도 간단하며 개발자의 실수로 줄여줄 수 있습니다.

open class Animal {
    open fun sound() {
        println("Some generic animal sound")
    }
}

class Dog : Animal() {
    override fun sound() {
        println("멍! 멍!")
    }
}

class Cat : Animal() {
    override fun sound() {
        println("야옹~")
    }
}
반응형