상속
자바에서 있던 상속처럼 kotlin 또한 클래스를 상속시킬 수 있습니다.
- 슈퍼 클래스(부모 클래스) : 다른 클래스에게 상속 시켜주는 클래스입니다. 상위 클래스라고도 불립니다.
- 서브 클래스(자식 클래스) : 슈퍼 클래스에게 상속을 받는 클래스입니다. 하위 클래스라고도 불립니다.
open class Car() {
val x : String = "Volvo"
}
class Volvo : Car() {
fun speed() {
println(x)
}
}
fun main() {
val c1 = Volvo()
c1.speed()
}
기본적으로 코틀린에서 클래스는 final로 선언되어 있어 상속할 수 없습니다. 따라서 상속하고자 하는 슈퍼 클래스를 다른 클래스가 상속할 수 있도록 open이라는 키워드를 사용해 상속 가능한 상태로 만들어야 합니다.
자식 클래스는 상속받는 부모 클래스를 콜론(:)으로 표시해야합니다.
메소드 오버라이딩
open class Car {
open fun myCar() {
println("Car")
}
}
class Volvo : Car() {
override fun myCar() {
println("Volvo")
}
}
fun main() {
val c1 = Volvo()
c1.myCar()
}
자식 클래스에서 부모 클래스의 멤버 함수를 오버라이드(재정의)할 수 있습니다. 메서드를 오버라이드하려면 override 키워드를 사용해야 합니다.
오버라이드는 "부모 클래스의 멤버함수를 가린다" 라는 뜻도 가지고 있어 myCar()을 사용하면 Car가아닌 Volvo를 출력하게 됩니다.
속성 오버라이딩
open class Car {
open val name : String = "Ventz"
}
class Volvo : Car() {
override val name = "Volvo"
}
val속성을 오버라이드할 수 있지만 var 그 반대로는 할 수 없습니다.
상속과 생성자
open class Car(val name: String)
class Volvo(name: String, val price: Int) : Car(name)
코틀린에서는 부모 클래스의 생성자 인자를 자식 클래스에서 초기화할 수 있습니다. 이때 자식 클래스의 생성자 선언에서 콜론(:) 다음에 부모 클래스의 생성자 인자를 전달해야 합니다.
상속의 제한
- final 키워드를 사용하면 자식클래스는 부모클래스의 멤버함수을 사용할 수 없게 됩니다.
- open 키워드를 사용하면 자식클래스가 부모클래스의 멤버함수를 사용할 수있게 허가합니다.
출처
W3Schools.com
W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.
www.w3schools.com
Classes | Kotlin
kotlinlang.org
'개발 언어 (Language) > Kotlin' 카테고리의 다른 글
코틀린에서의 인터페이스 (0) | 2024.07.31 |
---|---|
코틀린에서의 속성 (0) | 2024.07.31 |
코틀린에서의 멤버함수(클래스 함수) (0) | 2024.07.29 |
코틀린에서의 생성자 (0) | 2024.07.29 |
코틀린에서의 객체 지향 (0) | 2024.07.29 |