[Kotlin] 추상 클래스

최율·2022년 12월 9일
0

Kotlin

목록 보기
9/10

추상 클래스

코틀린에서 추상 클래스는 abstract 키워드를 사용해 정의한다.
추상 클래스는 인스턴스화 할 수 없으며 하위 클래스에 의해 상속될 수 있다.

예제 코드

abstract class Shape {
    abstract val width: Double
    abstract val height: Double
    abstract fun area(): Double
}

class Circle(val radius: Double): Shape() {
    override val width: Double
        get() = radius * 2
    override val height: Double
        get() = radius * 2
    override fun area(): Double = PI * radius * radius
}

class Rectangle(override val width: Double, override val height: Double): Shape() {
    override fun area(): Double = width * height
}

fun main() {
    val shape: Shape = Circle(1.0)
    println(shape.area())

    val shape2: Shape = Rectangle(1.0, 2.0)
    println(shape2.area())
}

만약 어떤 클래스가 추상 클래스를 상속한다면 반드시 해당 추상 클래스의 추상 멤버들을 모두 초기화해야한다.

다음은 추상 클래스의 특징이다.

  • 추상 프로퍼티는 초기화 할 수 없다. -> 초기화 한다면 추상의 의미를 잃는다.
  • 추상 함수는 본문이 없다. -> 위와 동일한 이유
  • 추상 프로퍼티와 함수는 모두 타입을 명시해야한다.
  • 추상 멤버는 기본적으로 open이며 상속 가능하다. -> 상속이 불가능하다면 구체화 할 수 없기 때문
profile
공부한 것을 기록하고 공유하는 학생입니다!

0개의 댓글