Kotlin

[Kotlin] 추상 클래스

Jyuni 2023. 5. 25. 00:07

추상 클래스(abstract class)

  • 상속 받을 클래스에서 구현해야 할 프로퍼티 및 메서드를 기술한 클래스입니다.
  • abstract 키워드와 함께 선언하고 추상클래스는 객체 생성이 불가능합니다.
  • 코틀린에서 상속 받기 위해서 open클래스로 선언 했는 데 추상 클래스는 필요가 없습니다.
abstract class Car(val name: String, val color: String, val weight: Double) {
    // 추상 프로퍼티 (반드시 하위 클래스에서 재정의해 초기화 해야함)
    abstract var speed: Double
    // 일반 프로퍼티 (초기 값인 상태를 저장할 수 있음)
    var quality = "High"

    // 추상 메서드 (반드시 하위 클래스에서 구현해야 함)
    abstract fun start()
    abstract fun stop()
    // 일반 메서드
    fun display() {
        println("name : $name, color : $color, weight : $weight, " +
                "speed : $speed, quality : $quality")
    }
}

class Sedan(name: String, color: String, weight: Double, override var speed: Double)
    : Car(name, color, weight) {
    override fun start() {
        println("Sedan Start")
    }

    override fun stop() {
        println("Sedan Stop")
    }
}

class Truck(name: String, color: String, weight: Double, override var speed: Double)
    : Car(name, color, weight) {
    override fun start() {
        println("Truck Start")
    }

    override fun stop() {
        println("Truck Stop")
    }
}


fun main() {
    val sedan = Sedan("Sedan", "white", 1000.0, 300.0)
    val truck = Truck("Sedan", "white", 1000.0, 200.0)
    sedan.quality = "Low"
    sedan.display()
    sedan.start()
    truck.display()
    truck.start()
}

/* 결과
name : Sedan, color : white, weight : 1000.0, speed : 300.0, quality : Low
Sedan Start
name : Sedan, color : white, weight : 1000.0, speed : 200.0, quality : High
Truck Start
*/