엄코딩의 개발 일지

  코틀린 상속



코틀린에서는 다른 클래스를 상속 받을 때 콜론( 기호 : )을 사용합니다. 


그리고 코틀린에서 부모 클래스는 open이나 abstarct 키워드를 사용해야만 상속할 수 있습니다.


open class Car( var speed : Int)
{
open fun onRun(){
Log.e("SPEED","속도 : " + speed +"km")
}
}


Car 클래스를 상속 받기 위해 open 키워드를 사용하였습니다.

class AudiCar : Car(100)
{
override fun onRun() {
super.onRun()
Log.e("SPEED","속도 : " + (speed+40) +"km")
}
}


AudiCar 클래스에서는 Car 클래스를 상속받았습니다.


그리고 상속받은 클래스의 메소드를 오버라이드 하였습니다.


class MainActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

var ac : AudiCar = AudiCar()
ac.onRun()

}
}


MainActivity에서 AudiCar를 선언하고 오버라이드한 메소드 onRun()을 호출하였습니다.


결과가 예상되시죠~?





결과 


E/SPEED: 속도 : 100km

E/SPEED: 속도 : 140km



참고로 코틀린에서 상속시 함수에 open 키워드를 사용하지 않으면 기본으로 final로 선언되기 때문에 오버라이드 할 수 없는 문제가 발생할 수 있습니다 ! 


open class Car( var speed : Int)
{
fun onRun(){
Log.e("SPEED","속도 : " + speed +"km")
}
}


아래 소스에서 볼 수 있듯이 오버라이드를 허용하고 싶다면 반드시 open을 쓰셔야 합니다!!