1. 程式人生 > >Kotlin -- open, final, abstract 修飾符

Kotlin -- open, final, abstract 修飾符

Kotlin – open, final, abstract

  在Kotlin中,所有的類預設都是final的。如果你需要允許它可以被繼承,那麼你需要使用open宣告:

//這個類具有`open`屬性,可以被其他類繼承
open class People: Speakable{
    //`open`的方法被實現和覆寫,該方法也是`open`的
    override fun say() {}
    //`final`屬性的方法,不可被覆寫
    fun sayHello() {}
    //`open`屬性的方法,可以被繼承和覆寫
    open fun sayName() {}
}

  當然,你也可以阻止某些方法被覆寫:


open class People: Speakable{
    //`final`修飾一個原本具有`open`屬性的方法,使其變得不可再被覆寫
    final override fun say() {}
}

  在kotlin中,abstract的用法幾乎和Java一致,我就不再囉嗦,值得一提的是,當你使用abstract修飾符的時候,可以忽略open修飾符,因為被abstract修飾的類預設具有open屬性。

修飾符 相應類的成員 註解
final 不能被覆寫 在kotlin中預設所有的方法和類都是final
屬性
open 可以被覆寫 需要被明確指出
abstract 必須要覆寫 不能被例項化,預設具有open屬性。
override 覆寫超類的方法 如果沒有被指定為final,則預設具有open屬性

  上述表格僅適用於基類,對於介面類來說,你基本用不上fianlopenabstract,因為介面類預設是open,且不能被宣告為final,如果介面類的方法沒有函式體,那麼其為abstract,但是不需要你明確指出他是abstract的。