kotlin 語(yǔ)法總結(jié)(二)

引言

最近項(xiàng)目中開始使用Kotlin 語(yǔ)言尔苦,想掌握的更好只好看kotlin 官網(wǎng)文檔慎皱。今天主要看類與對(duì)象模塊。

類及一些使用語(yǔ)法

一框都、同java 一樣,通過class 關(guān)鍵字來聲明
二呵晨、創(chuàng)建對(duì)象:是沒有new 關(guān)鍵字魏保,直接用--> class(),class 是我定義的類。
三何荚、構(gòu)造函數(shù)囱淋,一個(gè)類有一個(gè)主構(gòu)造函數(shù)和可以有多個(gè)次級(jí)構(gòu)造函數(shù)猪杭,主構(gòu)造函數(shù)是類頭的一部分餐塘,放在類名之后。如果類沒有注解或者可見修飾符皂吮,那么constructor可以省略戒傻。
四、注意:主構(gòu)造函數(shù)中的屬性蜂筹,可以在初始化塊中使用和類體內(nèi)聲明的屬性的初始化器中使用需纳。
五、在次級(jí)構(gòu)造函數(shù)中艺挪,如果要委托到一個(gè)類中的另一個(gè)構(gòu)造函數(shù)不翩,用 this關(guān)鍵字,(我在自定義dialog 時(shí)候用到過麻裳,自定義控件中應(yīng)該能經(jīng)常用到)
六口蝠、注意點(diǎn):初始化塊中代碼和初始化器中的代碼是在次級(jí)構(gòu)造函數(shù)之前調(diào)用的。
七津坑、kotlin 中所有類有一個(gè)超類妙蔗,Any,類似于java 中的Object類
八疆瑰、kotlin 類一般都是final眉反,如果要使用其可以被繼承昙啄,用關(guān)鍵字 open 來修飾。
九寸五、密封類:在類名程前添加 修飾符sealed梳凛,其子類和其必須在一個(gè)文件中。

范型特點(diǎn)總結(jié):

范型:參數(shù)化類型梳杏,故名思意伶跷,就是對(duì)參數(shù)類型進(jìn)行一個(gè)靈活定義,減少重復(fù)代碼量秘狞,解除與實(shí)際類型的定向綁定叭莫,達(dá)到解耦,在編譯階段就就會(huì)提示烁试,在代碼中類型進(jìn)行強(qiáng)轉(zhuǎn)雇初,如果類型轉(zhuǎn)換是錯(cuò)誤的,編譯時(shí)不會(huì)提示减响,在運(yùn)行的時(shí)候才會(huì)提示靖诗,用范型在編譯階段就會(huì)提示,增加了代碼的安全性支示,并且代碼清晰刊橘,容易閱讀。

注意點(diǎn):一個(gè)方法是不是范型和其所在的類是不是范型沒有關(guān)系颂鸿。

類型參數(shù)限定: 分為上界 和下界促绵,上界用extends關(guān)鍵字來來實(shí)現(xiàn),下界是用 super 關(guān)鍵字來實(shí)現(xiàn)嘴纺。

lateinit 和 lazy 延遲初始化區(qū)別

一败晴、lateinit 只用于變量var ,lazy 只用于常量val 栽渴,
二尖坤、lazy 應(yīng)用于單單例模式,而且當(dāng)且僅當(dāng)變量第一次調(diào)用的時(shí)候 委托才會(huì)被調(diào)用闲擦。第一調(diào)用的時(shí)候是執(zhí)行表達(dá)式并記錄結(jié)果慢味,第二次調(diào)用直接讀取結(jié)果。
lateinit 只能用于聲明周期內(nèi)參數(shù)獲取或初始化墅冷。

kotlin const val 和 val 區(qū)別:

const 必須修飾val
const 只允許在top-level級(jí)別和object中聲明纯路,使用方式如下
打開Android studio 點(diǎn)擊 Tools->Kotlin->Show Kotlin ByteCode,通過查看字節(jié) 碼,可以看到生成的代碼的區(qū)別如下:

// class version 50.0 (50)
// access flags 0x31
public final class com/example/kotlin/myObject {


  // access flags 0x19
  public final static Ljava/lang/String; constObject = "constObject"
  @Lorg/jetbrains/annotations/NotNull;() // invisible

  // access flags 0x1A
  private final static Ljava/lang/String; normalObject = "normalObject"
  @Lorg/jetbrains/annotations/NotNull;() // invisible

  // access flags 0x11
  public final getNormalObject()Ljava/lang/String;
  @Lorg/jetbrains/annotations/NotNull;() // invisible
  L0
   LINENUMBER 144 L0
   GETSTATIC com/example/kotlin/myObject.normalObject : Ljava/lang/String;
   ARETURN
   L1
   LOCALVARIABLE this Lcom/example/kotlin/myObject; L0 L1 0
   MAXSTACK = 1
   MAXLOCALS = 1

   ......

總結(jié):從字節(jié)碼我們可以看到const val 和val修飾對(duì)象的主要區(qū)別是:
const val 可見性為public final static俺榆,可以直接訪問感昼。
val 可見性為private final static,并且val 會(huì)生成方法getNormalObject()罐脊,通過方法調(diào)用訪問定嗓。
如果定義常量時(shí)候蜕琴,用const val 方式效率更高。避免方法的頻繁調(diào)用宵溅。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末凌简,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子恃逻,更是在濱河造成了極大的恐慌雏搂,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,185評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件寇损,死亡現(xiàn)場(chǎng)離奇詭異凸郑,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)矛市,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門芙沥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人浊吏,你說我怎么就攤上這事而昨。” “怎么了找田?”我有些...
    開封第一講書人閱讀 163,524評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵歌憨,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我墩衙,道長(zhǎng)务嫡,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,339評(píng)論 1 293
  • 正文 為了忘掉前任底桂,我火速辦了婚禮植袍,結(jié)果婚禮上惧眠,老公的妹妹穿的比我還像新娘籽懦。我一直安慰自己,他們只是感情好氛魁,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,387評(píng)論 6 391
  • 文/花漫 我一把揭開白布暮顺。 她就那樣靜靜地躺著,像睡著了一般秀存。 火紅的嫁衣襯著肌膚如雪捶码。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,287評(píng)論 1 301
  • 那天或链,我揣著相機(jī)與錄音惫恼,去河邊找鬼。 笑死澳盐,一個(gè)胖子當(dāng)著我的面吹牛祈纯,可吹牛的內(nèi)容都是我干的令宿。 我是一名探鬼主播,決...
    沈念sama閱讀 40,130評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼腕窥,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼粒没!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起簇爆,我...
    開封第一講書人閱讀 38,985評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤癞松,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后入蛆,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體响蓉,經(jīng)...
    沈念sama閱讀 45,420評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,617評(píng)論 3 334
  • 正文 我和宋清朗相戀三年哨毁,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了厕妖。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,779評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡挑庶,死狀恐怖言秸,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情迎捺,我是刑警寧澤举畸,帶...
    沈念sama閱讀 35,477評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站凳枝,受9級(jí)特大地震影響抄沮,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜岖瑰,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,088評(píng)論 3 328
  • 文/蒙蒙 一叛买、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蹋订,春花似錦率挣、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至智什,卻和暖如春动漾,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背荠锭。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工旱眯, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,876評(píng)論 2 370
  • 正文 我出身青樓删豺,卻偏偏與公主長(zhǎng)得像础爬,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子吼鳞,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,700評(píng)論 2 354