Kotlin -- open, final, abstract 修飾符
阿新 • • 發佈:2018-12-31
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 屬性 |
上述表格僅適用於基類,對於介面類來說,你基本用不上fianl
、open
、abstract
,因為介面類預設是open
,且不能被宣告為final
,如果介面類的方法沒有函式體,那麼其為abstract
,但是不需要你明確指出他是abstract
的。