[코틀린기초] 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")
    }
  }