티스토리 뷰

Kotlin

[Kotlin] open  vs  abstract

혀가 길지 않은 개발자 2021. 4. 5. 20:35
fun main() {

    val button: View = Button()
    button.click()

}

abstract class View {
    abstract fun click()
}

class Button: View() {
    override fun click() {
        println("Button")
    }
}

실행 결과

abstract class는 abstract fun을 가진다.

abstract fun의 바디는 구현할 수 없다.

 

 

 

 

 

fun main() {

    val button: View = Button()
    button.click()

}

open class View {
    open fun click() {
        println("View")
    }
}

class Button: View() {
    override fun click() {
        super.click()		// 없어도 됨
        println("Button")
    }
}

실행 결과

 

 

open class는 상속 가능한 클래스이다. 

open fun은 override 가능한 함수이다. 

open fun은 바디를 구현해야만 한다.

super.click()을 사용하지 않아도 된다.

 

 

 


fun main() {

    val view: View = Button()
    view.showOff()

}

open class View {
    open fun click() {
        println("View")
    }
}

class Button: View() {
    override fun click() {
        super.click()
        println("Button")
    }
}

fun View.showOff() = println("View Show Off")
fun Button.showOff() = println("Button Show Off")

실행 결과

 

확장 함수를 사용하면 정적 타입에 의해 어떤 확장 함수가 호출될지 결정되지,

동적인 타입에 의해 확장 함수가 결정되지 않는다.

 

 

 

 

 

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함