Kotlin/포스팅

코틀린 추상클래스의 추상 멤버

짜집퍼박사(짜박) 2024. 1. 2. 12:39

코틀린에서 추상 클래스의 추상 멤버(abstract member)는 하위 클래스에서 반드시 구현되어야 하는 멤버를 의미합니다. 이러한 추상 멤버는 본문이 없는 추상 메서드나 추상 프로퍼티 등이 될 수 있습니다. 추상 멤버를 가지는 클래스는 반드시 abstract 키워드로 선언되어야 합니다.

아래에서는 코틀린에서 추상 클래스의 추상 멤버를 사용하는 방법에 대해 설명하겠습니다.

 

1. 추상 메서드

추상 메서드는 본문이 없는 메서드로, 하위 클래스에서 반드시 구현되어야 합니다. 추상 메서드는 abstract 키워드를 사용하여 선언됩니다.

abstract class Shape {
    abstract fun area(): Double
}

위의 예제에서 Shape 클래스는 추상 메서드인 area()를 선언하고 있습니다. 이 메서드는 하위 클래스에서 구현되어야 합니다.

 

2. 추상 프로퍼티

추상 프로퍼티는 본문이 없는 프로퍼티로, 하위 클래스에서 반드시 구현되어야 합니다. 추상 프로퍼티는 초기값을 가질 수 없으며, 하위 클래스에서 초기화해야 합니다.

abstract class Shape {
    abstract val sides: Int
}

위의 예제에서 Shape 클래스는 추상 프로퍼티인 sides를 선언하고 있습니다. 이 프로퍼티는 하위 클래스에서 반드시 초기화되어야 합니다.

 

3. 추상 클래스의 사용

추상 클래스를 상속받는 하위 클래스에서는 추상 멤버를 반드시 구현해야 합니다. 만약 하위 클래스에서 어떤 추상 멤버도 구현하지 않으면 컴파일 오류가 발생합니다.

class Circle(val radius: Double) : Shape() {
    override fun area(): Double {
        return 3.14 * radius * radius
    }
}

위의 예제에서 Circle 클래스는 Shape 추상 클래스를 상속받으면서 추상 메서드 area()를 구현하고 있습니다.

 

4. 추상 클래스의 인스턴스 생성 방지

추상 클래스는 직접적으로 인스턴스를 생성할 수 없습니다. 추상 클래스를 사용하려면 하위 클래스를 통해 인스턴스를 생성해야 합니다.

val shape: Shape = Circle(5.0)

위의 예제에서 Shape 추상 클래스의 인스턴스인 shape 변수는 Circle 클래스를 통해 생성된 것입니다.

 

5. 인터페이스와의 비교

추상 클래스의 추상 멤버는 반드시 하위 클래스에서 구현되어야 하지만, 인터페이스의 메서드는 기본적으로 추상이며, 하위 클래스에서 구현하지 않아도 됩니다. 또한, 추상 클래스는 생성자를 가질 수 있지만, 인터페이스는 생성자를 가질 수 없습니다.

interface MyInterface {
    fun myMethod()
}

abstract class MyAbstractClass {
    abstract fun myAbstractMethod()
}

상황에 따라 추상 클래스와 인터페이스를 선택해야 하며, 둘을 혼합해서 사용할 수도 있습니다. 추상 클래스는 코드의 일부를 공유하면서 일부 메서드를 하위 클래스에게 위임하고자 할 때 유용합니다.

 

With ChatGPT

'Kotlin > 포스팅' 카테고리의 다른 글

코틀린 봉인된 클래스  (0) 2024.01.02
코틀린 인터페이스  (0) 2024.01.02
코틀린 추상 클래스  (0) 2024.01.02
코틀린 공통 메서드  (0) 2024.01.02
코틀린 상속 캐스팅  (0) 2024.01.02