Kotlin學(xué)習(xí)筆記之 12 對(duì)象表達(dá)式和對(duì)象聲明

首發(fā)于公眾號(hào): DSGtalk1989

12.對(duì)象表達(dá)式和對(duì)象聲明

  • 方法返回匿名對(duì)象

    我們也可以直接將object關(guān)鍵字修飾的匿名類賦值給方法,表明這個(gè)方法返回的是一個(gè)匿名內(nèi)部類對(duì)象。

    同時(shí)私有方法返回的匿名對(duì)象的屬性是可以在本地被訪問(wèn)的,非私有方法返回的匿名對(duì)象的屬性是不能訪問(wèn)的。

    // 私有函數(shù),所以其返回類型是匿名對(duì)象類型
     private fun foo() = object {
         val x: String = "x"
     }
    
     // 公有函數(shù),所以其返回類型是 Any
     fun publicFoo() = object {
         val x: String = "x"
     }
    
     fun bar() {
         val x1 = foo().x        // 沒(méi)問(wèn)題
         val x2 = publicFoo().x  // 錯(cuò)誤:未能解析的引用“x”
     }
    
  • 對(duì)象聲明

    object關(guān)鍵字可以直接來(lái)聲明對(duì)象,比如:

    object Site {
          var url:String = ""
          val name: String = "菜鳥教程"
    }
    

    這個(gè)對(duì)象可以賦值給不同的變量,但是多個(gè)變量同時(shí)指向的是一個(gè)對(duì)象,一旦一個(gè)變量改動(dòng)了對(duì)象的某個(gè)屬性,所有的變量都會(huì)變。

object Site {
      var url:String = ""
      val name: String = "菜鳥教程"
  }
  fun main(args: Array<String>) {
      var s1 =  Site
      var s2 = Site
      s1.url = "www.runoob.com"
      println(s1.url)
      println(s2.url)
  }

發(fā)現(xiàn)s1s2url都改了。


Kotlin學(xué)習(xí)筆記之 1 基礎(chǔ)語(yǔ)法

Kotlin學(xué)習(xí)筆記之 2 基本數(shù)據(jù)類型

Kotlin學(xué)習(xí)筆記之 3 條件控制

Kotlin學(xué)習(xí)筆記之 4 循環(huán)控制

Kotlin學(xué)習(xí)筆記之 5 類和對(duì)象

Kotlin學(xué)習(xí)筆記之 6 繼承

Kotlin學(xué)習(xí)筆記之 7 接口

Kotlin學(xué)習(xí)筆記之 8 擴(kuò)展

Kotlin學(xué)習(xí)筆記之 9 數(shù)據(jù)類與密封類

Kotlin學(xué)習(xí)筆記之 10 泛型

Kotlin學(xué)習(xí)筆記之 11 枚舉類

Kotlin學(xué)習(xí)筆記之 12 對(duì)象表達(dá)式和對(duì)象聲明

Kotlin學(xué)習(xí)筆記之 13 基礎(chǔ)操作符run、with、let、also、apply

Kotlin學(xué)習(xí)筆記之 14 包與導(dǎo)入

Kotlin學(xué)習(xí)筆記之 15 伴生對(duì)象

Kotlin學(xué)習(xí)筆記之 16 委托

Kotlin學(xué)習(xí)筆記之 17 可觀察屬性

Kotlin學(xué)習(xí)筆記之 18 函數(shù)

Kotlin學(xué)習(xí)筆記之 19 高階函數(shù)與 lambda 表達(dá)式

Kotlin學(xué)習(xí)筆記之 20 內(nèi)聯(lián)函數(shù)

Kotlin學(xué)習(xí)筆記之 21 解構(gòu)聲明

Kotlin學(xué)習(xí)筆記之 22 集合

Kotlin學(xué)習(xí)筆記之 23 相等判斷

Kotlin學(xué)習(xí)筆記之 24 操作符重載

Kotlin學(xué)習(xí)筆記之 25 異常捕捉

Kotlin學(xué)習(xí)筆記之 26 反射

Kotlin學(xué)習(xí)筆記之 27 類型別名

Kotlin學(xué)習(xí)筆記之 28 協(xié)程基礎(chǔ)

Kotlin學(xué)習(xí)筆記之 29 上下文與調(diào)度器

Kotlin學(xué)習(xí)筆記之 30 協(xié)程取消與超時(shí)

Kotlin學(xué)習(xí)筆記之 31 協(xié)程掛起函數(shù)的組合

Kotlin學(xué)習(xí)筆記之 32 協(xié)程異常處理

Kotlin學(xué)習(xí)筆記之 33 協(xié)程 & Retrofit

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容