最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Kotlin類與屬性及構造函數的使用詳解

 更新時間:2022年09月06日 09:50:39   作者:niuyongzhi  
這篇文章主要介紹了Kotlin語言中類與屬性及構造函數的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

1.類的屬性 filed

1)在kotlin中定義屬性,必須賦初始值,要不編譯器檢查不通過。這個和java不同

2)kotlin會針對于定義的每個屬性都封裝了一個field,用于存儲數據。

3)針對于非private的var(可變)屬性,kotlin默認會生成一組getter和setter方法,通過反編生成的byteCode代碼可以看到定義的setter和getter方法。

4 )針對于非private的val(不可變)屬性,kotlin只生成了getter方法,沒有setter方法,因為定義為val的屬性,是不允許修改的。

5)我們也可以在屬性后面,復寫getter和setter方法,自己定義要實現(xiàn)的內容。

6)針對于private關鍵字修飾的屬性,kotlin不對外提供setter和getter方法。盡管我們能夠復寫這兩個方法。外界還是不能夠訪問。這點和Java有很大的不同。

class Person {
    //針對于定義的每個屬性,都有一個filed進行封裝。
    //對于非private的屬性,都會生成一對getter和setter方法
    //我們也可以自己定義這倆方法
    var name = ""
        get() = field.plus("_01")
        set(value) {
            field = value.uppercase()
        }
    //對于val的屬性,kotlin不聽過setter方法
    val age = 0
        get() = field + 1
    //對于private屬性,kotlin不提供getter和setter方法。
    //雖然我們已經復寫了,但是外界還是不夠能訪問,這個和java的區(qū)別很大。
    private var subject = ""
        get() = "Kotlin"
        set(value) {
            field = value
        }
}
fun main() {
    val person = Person()
    person.name = "LiLei"
    println(person.name)
    println(person.age)
}

2.構造函數

1)定義在class 類名 后面的構造函數,是類的主構造函數。這個和java不一樣,可以直接定義在類上

2)在主構造函數中,可以使用臨時變量給類屬性賦值,為了方便識別,在kotlin中,臨時變量通常會以下劃線開頭_屬性名。如_name:String

3)在主構造函數中,可以同時定義臨時變量和類屬性,要加上var或val修飾符。如var age:Int

4)在屬性參數后直接設置默認值。創(chuàng)建對象時,默認參數可以不傳。如var subject:String="Kotlin"

5通過constructor() : this可以定義次構造函數

6)通過init{}定義初始化塊,對所傳參數進行有效性檢查。初始化塊會在構造類實例時執(zhí)行。

//定義在class 類名 后面的構造函數,是類的主構造函數。
//在主構造函數中,可以使用臨時變量給類屬性賦值,為了方便識別,在kotlin中,臨時變量通常會以下劃線開頭_屬性名。
//也可以在主構造函數中,可以同時定義臨時變量和類屬性,要加上var或val修飾符。
//還可以在屬性后直接設置默認值。創(chuàng)建對象時,默認參數可以不傳。
class Person(_name: String, var age: Int, var subject: String = "Kotlin") {
    var name = _name
        get() = field.plus("_01")
        set(value) {
            field = value.lowercase()
        }
    //次構造函數
    constructor(_name: String, _age: Int) : this(_name, _age, "Java"){
        this.name = _name.trim()
    }
    //無參是次構造函數
    constructor() : this("", 1, "")
    //初始化代碼塊
    init {
        //通過require函數,對屬性值做合規(guī)判斷。如果
        require(age > 0) { "age must be >0" }
        require(name.isNotEmpty()){"name can not be empty"}
    }
}
fun main() {
    val person = Person("LiLei ", 18)
    println(person.name)
    println(person.age)
    println(person.subject)
}

3.執(zhí)行順序

對應屬性,可以通過主構造函數、類屬性、初始化代碼塊、和次級構造函數,來進行初始化。

那么他們的執(zhí)行順序就是上面這個順序。這個執(zhí)行順序要牢記,很關鍵,有可能會踩到坑。

4.延遲初始化

通過 lateinit這個關鍵字,實現(xiàn)延遲初始化。屬性可以在聲明時,不必賦初始值。但是在使用前必須賦值。可以通過::hobby.isInitialized 這個來判斷是否初始化完成。

    lateinit var hobby:String
    fun initHobby(){
        hobby="game"
    }
    fun isInit():Boolean{
        //判斷屬性是否初始化
        return ::hobby.isInitialized
    }

5.惰性初始化

通過by lazy可以實現(xiàn)惰性初始化。屬性聲明時不必賦值,使用這個屬性時,會自動初始化。

    val lazy by lazy { lazyinit() }
    private fun lazyinit() :Boolean{
        println("lazy init")
        return true
    }

到此這篇關于Kotlin類與屬性及構造函數的使用詳解的文章就介紹到這了,更多相關Kotlin類 屬性 構造函數內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Android webview轉PDF的方法示例

    Android webview轉PDF的方法示例

    本篇文章主要介紹了Android webview轉PDF的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01
  • Android 6.0權限請求相關及權限分組方法

    Android 6.0權限請求相關及權限分組方法

    今天小編就為大家分享一篇Android 6.0權限請求相關及權限分組方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-08-08
  • 使用RecylerView完成拖動排序高仿qq側滑刪除功能

    使用RecylerView完成拖動排序高仿qq側滑刪除功能

    最近在做一個android項目,使用到Recylerview完成拖動排序,側滑刪除功能,今天小編把思路分享到腳本之家平臺,供大家學習
    2016-10-10
  • Android如何獲取本地文件目錄

    Android如何獲取本地文件目錄

    這篇文章主要介紹了Android如何獲取本地文件目錄,通過點擊按鈕,獲取本地文件目錄,可以選擇圖片,展示選取的對應圖片和展示存儲路徑,感興趣的朋友跟隨小編一起看看吧
    2024-04-04
  • android全局監(jiān)控click事件的四種方式(小結)

    android全局監(jiān)控click事件的四種方式(小結)

    本篇文章主要介紹了android全局監(jiān)控click事件的四種方式(小結),詳細介紹如何在全局上去監(jiān)聽 click 點擊事件,并做些通用處理或是攔截,有興趣的可以了解一下
    2017-08-08
  • Android仿百度地圖小度語音助手的貝塞爾曲線動畫

    Android仿百度地圖小度語音助手的貝塞爾曲線動畫

    這篇文章主要為大家詳細介紹了Android仿百度地圖小度語音助手的貝塞爾曲線動畫,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • Android?WebView預渲染介紹

    Android?WebView預渲染介紹

    這篇文章主要介紹了Android?WebView預渲染介紹,文章圍繞主題展開詳細的內容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-09-09
  • Kotlin使用flow實現(xiàn)倒計時功能(示例詳解)

    Kotlin使用flow實現(xiàn)倒計時功能(示例詳解)

    這篇文章主要介紹了Kotlin使用flow實現(xiàn)倒計時功能,本文通過圖文實例相結合給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧
    2024-02-02
  • Android實現(xiàn)單項、多項選擇操作

    Android實現(xiàn)單項、多項選擇操作

    這篇文章主要介紹了Android實現(xiàn)單項、多項選擇操作的相關資料,單項選擇、多項選擇操作在項目開發(fā)中經常應用,感興趣的小伙伴們可以參考一下
    2016-04-04
  • Flutter實現(xiàn)Android滾動懸浮效果過程

    Flutter實現(xiàn)Android滾動懸浮效果過程

    這篇文章主要介紹了Flutter實現(xiàn)Android滾動懸浮效果,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧
    2023-01-01

最新評論

绥中县| 宁城县| 昌乐县| 积石山| 襄樊市| 滕州市| 夹江县| 唐河县| 库车县| 南阳市| 汤原县| 常熟市| 永顺县| 彭山县| 平和县| 普兰县| 射洪县| 拉萨市| 昭觉县| 利津县| 定西市| 融水| 辽源市| 镇赉县| 曲阜市| 广东省| 图们市| 洛川县| 长岛县| 南昌县| 体育| 鄂温| 华宁县| 睢宁县| 揭西县| 彩票| 苏尼特左旗| 德格县| 保德县| 顺义区| 额尔古纳市|