
前言:
這個文章主要是歸集一下kotlin中的關(guān)鍵字,當然也會慢慢的逐一介紹和解釋每一個關(guān)鍵字的作用和在JAVA中對應(yīng)功能。文章不一定能夠一次把所有的關(guān)鍵字都歸集到一起,但是后期會發(fā)現(xiàn)一個更新一次,爭取能夠在博主能力范圍內(nèi)盡可能最多的歸集這些關(guān)鍵字。也希望大家在閱讀文章的時候發(fā)現(xiàn)沒有的在下方留言,博主會及時的對所留關(guān)鍵字進行學習和總結(jié),希望大家多多指點。
以下關(guān)鍵字不管簡單的難的都有,博主目的也是讓自己對kotlin中的關(guān)鍵字全部做一個歸集,過于簡單的或者和JAVA中用法等一致的也會一筆帶過。對于別人已經(jīng)描述的很清楚的關(guān)鍵字,我會貼出鏈接,不在重新造輪子了。
關(guān)鍵字:
修飾類:
1. object
Object關(guān)鍵字
作為類它可以繼承另一個類,實現(xiàn)接口,有成員屬性和成員函數(shù);
作為實例它可以聲明為一個類型,不能有構(gòu)造函數(shù),引用時直接使用名稱,多次訪問返回同一結(jié)果。
2. companion
3. constructor
構(gòu)造函數(shù)。具體點擊進去看大神詳解。
4. data
5. sealed(密封類)
sealed class SealedClassName(){
data class DataClassName(val name: String, var age: Int): SealedClassName(){}
object class ObjectClassName(): SealedClassName{}
}
//不用在寫else語句
fun isString(scn: SealedClassName) = when(str){
is DataClassName -> "這是DataClassName對象"
is ObjectClassName -> "這是ObjectClassName對象"
}
6. inner
內(nèi)部類構(gòu)建關(guān)鍵字,在kotlin中嵌套類不是內(nèi)部類,內(nèi)部類要用inner關(guān)鍵字修飾。
7. enum
定義枚舉常量枚舉類,官網(wǎng)介紹
8. reified
修飾屬性:
1. const
這個關(guān)鍵字其實和val有著相似的功能,但是他修飾的屬性才是正真意義上JAVA中static final修飾的常量,關(guān)鍵字只能用在object修飾的類內(nèi)和companion object{}伴生對象內(nèi)或者文件的頂層(也就是和類同意級別的,調(diào)用則是用文件名調(diào)用,具體后續(xù)簡介)。
2. by
by關(guān)鍵字就是kotlin中特有的,一般用在委托屬性(后續(xù)會單獨介紹委托屬性)的時候。
3. val
不可變屬性,對應(yīng)JAVA中被final修飾過的屬性,標志著只能被一次賦值,但是該屬性也不是完全不可變,可以被繼承后改變,具體后續(xù)文章會介紹,這里只要知道一個概念。
4. var
可變屬性
5. vararg(可變參數(shù))
修飾方法:
通用關(guān)鍵字:
1. open
kotlin中所有文件默認是final的,也就是說默認kotlin中的類, 屬性,方法都是不繼承的。要想實現(xiàn)繼承我們需要在對應(yīng)的類, 屬性, 方法前面加上open關(guān)鍵字,標識著這個類, 屬性, 方法是可以被繼承的,注意kotlin中interface(接口)修飾的類和abstract(抽象)修飾的類,屬性,方法和override修飾的方法和屬性默認是open。
2. final
kotlin中所有文件默認是final的, 該關(guān)鍵字用法和JAVA一樣。
3. private
只在該類(以及它的成員)中可見, JAVA中用法一致。
4. internal (對應(yīng)JAVA中的所有類,屬性,方法的默認default)
在本模塊的所有可以訪問到聲明區(qū)域的均可以訪問該類的所有internal成員。
模塊在 Kotlin 中就是一系列的 Kotlin 文件編譯在一起:
— an IntelliJ IDEA module; (一個module)
— a Maven or Gradle project;.(一個gradle里面的依賴jar包(maven))
— a set of files compiled with one invocation of the Ant task.(通過一次調(diào)用Ant任務(wù)編譯的一組文件)
5. protected
一樣但在子類中也可見, JAVA中用法一致。
6. public
任何地方可見, JAVA中用法一致,值得注意的是ktlin中所有的類,屬性,方法默認都是public的。