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