Primary/Kotlin

[Kotlin] abstract class

해스끼 2022. 5. 18. 16:02

Abstract class(이하 추상 클래스)는 인스턴스를 만들 수 없는 클래스이다. 추상 클래스는 보통 추상 메소드를 포함한다. 추상 메소드란 기본적으로 구현되지 않은 메소드이며 따라서 자식 클래스에서 구현되어야 한다. 추상 메소드는 항상 `open`이므로 별도로 `open` 키워드를 적을 필요는 없다.

abstract class Animated {
    abstract fun animate()
    
    open fun stopAnimate() {
        // default implementation(기본 구현)을 가질 수 있음
    }
    
    fun animateAgain() {
        // default implementation(기본 구현)을 가질 수 있음
    }
}

위의 예시에서 `animate()`는 추상 메소드이다. 따라서 `Animated`에서 구현될 수 없으며 `Animated`의 자식 클래스가 반드시 구현해야 한다. 

 

추상 메소드가 아닌 `stopAnimate()`와 `animateAgain()`은 기본 구현값을 가질 수 있으며, `open` 키워드를 사용하여 상속 가능하게 만들 수도 있다.