Notice
Recent Posts
Recent Comments
NeuroWhAI의 잡블로그
[Kotlin] 상속 본문
// 추상 클래스
abstract class ZeroBase {
abstract fun hello() // Body 없음.
}
// 상속 가능 클래스
open class Base(val x: Int) : ZeroBase() {
override fun hello() {
// 오버라이드시 override 키워드 필수.
println("Hello!")
}
// abstract class, interface의 요소가 아니라면
// 오버라이드가 가능하기 위해선 open 키워드가 필요.
open fun test() {
println("Base")
}
}
class Derived : Base {
// super(...)로 상위 클래스의 생성자 호출 가능.
constructor() : super(42)
constructor(v: Int) : super(v)
override fun test() {
println("Derived")
}
fun test2() {
// 상위 클래스의 요소에 접근하려면 아래 문법으로 가능.
// C++로 따지면 Base::test()
super<Base>.test()
}
}
class Derived2(v: Int) : Base(v) {
constructor() : this(42)
}
// 기본적으로 클래스는 final이라서 상속 불가.
// class Foo() : Derived()
fun main(args: Array<String>) {
val a = Derived()
a.hello()
a.test()
a.test2()
println(a.x)
val b = Derived(777)
println(b.x)
val c = Derived2()
c.test()
println(c.x)
val d = Derived2(777)
println(d.x)
}
Hello! Derived Base 42 777 Base 42 777
그러합니다.
특이한건 open 말곤 없네요.
'개발 및 공부 > 언어' 카테고리의 다른 글
[Kotlin] 프로퍼티 (0) | 2018.09.22 |
---|---|
[C++] Structured binding 설명 (0) | 2018.09.20 |
[C++] Three-way comparison (0) | 2018.09.10 |
[C++] CTAD; User-defined deduction guides (사용자 정의 템플릿 인자 추론 가이드) (0) | 2018.09.10 |
[C++] C++17의 Template argument deduction (템플릿 인자 추론) (0) | 2018.09.09 |
Comments