Kotlin 상속 제어 키워드 정리 - open, final, abstract 완전 이해하기

✨ 개요

Kotlin은 Java보다 더 명확한 클래스 상속 제어 방식을 채택하고 있습니다.

기본적으로 Kotlin의 클래스는 final(상속 불가)이며, 명시적으로 열어줘야 상속이 가능합니다.

따라서 open, final, abstract 키워드를 적절히 사용하는 것이 클래스 설계의 핵심입니다.


1. 🧪 open - 상속을 허용하는 클래스 또는 멤버

open class Animal {
    open fun sound() = println("Unknown sound")
}

class Dog : Animal() {
    override fun sound() = println("Bark")
}

2. ✅ 🔒 final - 상속 및 오버라이딩 금지 (기본값)

open class Vehicle {
    final fun run() = println("Running")
}

3. ✅ abstract - 상속을 전제로 한 추상 설계

abstract class Shape {
    abstract fun draw()
}

class Circle : Shape() {
    override fun draw() = println("Draw Circle")
}

4. 🧾 결론

키워드 역할 기본 여부 사용 위치
open 상속 또는 오버라이딩 허용 클래스, 함수, 프로퍼티
final 상속 또는 오버라이딩 금지 ✅ (기본값) 클래스, 함수, 프로퍼티
abstract 추상 클래스/함수 정의, 반드시 구현 필요 클래스, 함수 (추상 클래스 내부)

이러한 상속 제어 키워드를 통해 Kotlin에서는 명확하고 안전한 클래스 설계를 유도합니다. 기본적으로 닫힌 클래스를 기반으로 필요한 경우만 열어두는 습관이 안정성과 유지보수성을 높이는 데 효과적입니다.



Related Posts