[코틀린기초] 30. 추상클래스
구현 클래스에서 가져야할 명세를 정의한 클래스 (프로퍼티 및 메서드 템플릿)
abstract키워드와 함께 선언하며, 추상 클래스는 객체 생성 안됨
구체적이지 않은 것을 나타내기 때문에 하위 파생 클래스에서 구체적으로 구현한다
open 키워드를 사용하지 않고도 파생 클래스 작성이 가능하다
//주 생성자에 선언된 프로퍼티들은 비추상 프로퍼티!!
abstract class Vehicle(val name: String, val color: String, val weight: Double){
//추상 프로퍼티. 하위 클래스에서 반드시 오버라이딩 해야한다!!!!
abstract val maxSpeed : Double
//비추상 프로퍼티
var year: String ="2008"
//추상 메서드
abstract fun start()
abstract fun stop()
//비추상 메서드
fun displaySpec(){
println("name: $name", color: $color)
}
}
파생 클래스 예시
class Car(name: String, color: String, weight: Double, overrride val maxSpeed : Double) : Vehicle(name,color,weight) {
overrride fun start(){
// 구현 내용
}
override fun stop(){
// 구현 내용
}
// 추가적인 메서드 선언
fun autoPilotOn(){
println("Auto Pilot ON")
}
}