Kotlin实战指南十八:open、internal 关键字使用
轉載請標明出處:http://blog.csdn.net/zhaoyanjun6/article/details/117365712
本文出自【趙彥軍的博客】
文章目錄
- 往期精彩文章
- open關鍵字
- internal關鍵字
往期精彩文章
Kotlin實戰指南十七:JvmField、JvmStatic使用
Kotlin實戰指南十六:Synchronized、Volatile
Kotlin實戰指南十五:協程泄漏
open關鍵字
在java中允許創建任意的子類并重寫方法任意的方法,除非顯示的使用了final關鍵字進行標注。
而在kotlin的世界里面則不是這樣,在 kotlin 中它所有的類默認都是final的,那么就意味著不能被繼承,而且在類中所有的方法也是默認是final 的,那么就是 kotlin 的方法默認也不能被重寫。那么想在 kotlin 中繼承父類應該怎么做呢?
- 為類增加open,class就可以被繼承了
- 為方法增加open,那么方法就可以被重寫了
internal關鍵字
internal 修飾類的方法,表示這個類方法只適合當前module使用,如果其他module使用的話,會找不到這個internal方法或者報錯。下面我們在moduleA創建一個類 Apple ,里面有兩個輸出的方法。
class Apple() {fun appleLog(){Log.i("debug=","appleLog")}internal fun appleInternalLog(){Log.i("debug=","appleInternalLog")}}然后在 moduleB 創建 kt 類,調用 Apple 的方法,發現只有appleLog方法可以調用,而appleInternalLog 方法則是不顯示。
Apple().appleLog()再來,我們在 moduleB 創建 java 類,調用 Apple 的方法 ,
void text(){new Apple().appleInternalLog$production_sources_for_module_arms();//報錯,usage of kotlin internal declaration from different modulenew Apple().appleLog(); //正常。 }總結
所以 internal限制了跨 module 的方法的使用
總結
以上是生活随笔為你收集整理的Kotlin实战指南十八:open、internal 关键字使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Kotlin实战指南十七:JvmFiel
- 下一篇: Kotlin实战指南十九:use 函数魔