日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

Kotlin实战指南十八:open、internal 关键字使用

發(fā)布時間:2024/9/30 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Kotlin实战指南十八:open、internal 关键字使用 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

轉(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 class Person{}
  • 為方法增加open,那么方法就可以被重寫了
open class Person{open fun eat(food: String) {}}open class Man:Person(){override fun eat(food: String) {super.eat(food)} }

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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。