Kotlin 추상 클래스


추상 클래스(abstract)

abstract 추상 클래스를 정의한다. 추상 클래스는 추상 함수와 추상 속성을 갖는다. 추상 클래스 추상 멤버를 가질 수 있으며, 자신은 그대로는 인스턴스화 할 수 없고 하위 클래스에서 상속 추상 메소드와 추상 속성을 구현하여 인스턴스화 한다. 서브 클래스가 구현해야 할 메소드와 속성의 규칙을 정하는 것이 추상 클래스이다.

아래 Greeter 추상 클래스에는 추상 속성 name과 추상 메서드 greet가 있다. 이러한 추상 멤버는 시그니처만으로 구현이 되어 있지 않을 것을 알 수 있다.

예제: 추상 클래스의 예

abstract class Greeter {            // 추상 클래스 
    abstract var name: String       // 추상 속성 
    abstract fun greet(): String    // 추상 함수 
}

Greeter의 상속 서브 클래스를 아래에 정의되어 있다. 여기에서는 각 추상 멤버를 override 키워드로 붙여서 오버라이드(override) 하고 있다. Kotlin에서는 오버라이드 할 때는 override 키워드가 필수이다. 덧붙여서, abstract 클래스는 open 없이 상속 가능한 클래스이다.

예제: 추상 클래스를 상속한 서브 클래스

class Hello : Greeter() {                    // 추상 클래스를 구현하는 서브 클래스
    override var name: String = "devkuma"    // 추상 속성을 구현
    override fun greet(): String = "Hello"   // 추상 함수를 실행
}

그럼 위에 추상 클래스를 상속한 서브 클래스를 실행시켜 보자.

예제: 클래스 실행

fun main() {
    var hello = Hello()
    println(hello.name)
    println(hello.hello())
}

Output:

devkuma
Hello