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
*/