<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                參考:[擴展](http://www.kotlincn.net/docs/reference/extensions.html#%E6%89%A9%E5%B1%95) ## 拓展函數 [TOC] ### 定義 Kotlin的標準庫給我們提供了大量的類,類里面提供了大量的方法。但是,實際開發過程中,具體的某一個類,僅僅通過系統提供的方法遠遠不能滿足需求。**通過 擴展 聲明完成一個類的新功能 擴展 ,而無需繼承該類或使用設計模式(例如,裝飾者模式)。** 使用Java開發的時候,我們可以通過繼承類或者通過代理模式,可以對某一個類做增強。使用Kotlin開發,這一切變的簡單。Kotlin允許拓展方法,只需要按照給定的語法格式,可以很方便的對某一個類添加方法。 ### 怎么定義拓展函數 那拓展函數怎么定義呢?通過如下格式定義: ~~~ fun AnyClass.functionName(params):receiveType{ method body } ~~~ * AnyClass:任意類 * functionName:拓展函數的函數名 * params:拓展函數的參數 * receiverType:拓展函數的返回值類型 * method body:拓展函數的方法體 假如,假如我們**想獲取字符串最后一個字符**,如果**用Java語言,我們可能需要會定義一個StringUtils的類,然后寫一個getLastChar的方法**,代碼如下: ![](https://box.kancloud.cn/697c7e551b30caf0b73b2d1db87846e2_689x618.png) 同樣的邏輯,**如果在Kotlin里面,就是通過拓展函數的形式去實現了**,參考代碼: ![](https://box.kancloud.cn/2f4101bb4ec20fa58645dd8a94c1f2b7_680x379.png) ### 拓展函數使用注意 **Java里面,父類和子類有相同方法的時候,子類方法優先**。這是多態的表現,通過一個代碼給大家回顧下,參考代碼: ![](https://box.kancloud.cn/71feeca1137f84839c1c216da9406d46_675x797.png) 那如果Kotlin里面,子類和父類擁有同名的拓展方法會是怎樣呢?**Kotlin的拓展函數則不存在子類優先的原則,Kotlin的拓展函數是靜態解析(沒有多態)的,完全由當前變量的類型決定**。參考代碼: ![](https://box.kancloud.cn/96b54f4fd19bbbb85fee406f54af5f7c_688x610.png) 那**如果Kotlin里面,類本身的成員函數和拓展函數同名會怎樣呢?Kotlin的拓展函數針對成員函數和拓展函數同名問題,遵循成員函數優先的原則**。參考代碼: ![](https://box.kancloud.cn/8a20c4a08785caaf7393703c207d6da9_679x633.png) ## 拓展屬性 ### 定義 Kotlin的標準庫給我們提供了大量的類,類里面提供了大量的屬性。但是,實際開發過程中,具體的某一個類,僅僅通過系統提供的屬性可能不能滿足需求。 使用Java開發的時候,我們可以通過繼承類或者通過代理模式,可以對某一個類做增強。使用Kotlin開發,這一切變的簡單。**Kotlin允許拓展屬性,只需要按照給定的語法格式,可以很方便的對某一個類添加屬性**。 ### 怎么定義拓展屬性 那拓展函數怎么定義呢?通過如下格式定義: ~~~ val/var AnyClass.propertiesName: propertiesType getter setter ~~~ * AnyClass:任意類 * propertiesName:拓展屬性名字 * propertiesType:拓展屬性類型 * getter:拓展屬性的getter方法 * setter:拓展屬性的setter方法 **假如我們想“獲取字符串最后一個字符”**,我們除了用開始的拓展函數去實現,**還可以使用拓展屬性**,參考案例: ![](https://box.kancloud.cn/8ca17f4890f48638aa1aa8c201f67d71_690x348.png) ? ## 拓展函數編輯技巧 ![](https://box.kancloud.cn/5e1614543ba089be9e0e343b9c37525d_711x265.gif) ?
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看