中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android?Kotlin類怎么使用

發布時間:2022-06-24 09:32:52 來源:億速云 閱讀:152 作者:iii 欄目:開發技術

這篇文章主要介紹“Android Kotlin類怎么使用”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“Android Kotlin類怎么使用”文章能幫助大家解決問題。

    1. 類的聲明 & 實例化

    // 格式
    class 類名(參數名1:參數類型,參數名2:參數類型...){
                    // to do 
    }
    // 示例
    class User(userName: String, age: Int){
                   // to do 
    }
    // 實例化
    // Kotlin沒有new關鍵字,所以直接創建類的實例(無參情況 & 有參):
    var user = User()
    var user = User("ABC" , 123)
    // 額外說明:Kotlin支持默認參數
    // 即在調用函數時可不指定參數,則使用默認函數
    class User(userName: String = "hjc", age: Int = 26){
                  // to do 
    }
    // 在實例化類時不傳入參數,userName默認 = hjc,age默認 = 26
    var user = User()
    // 在設置默認值后,若不想用默認值可在創建實例時傳入參數
    var user = User("ABC" , 123)
    // 注:命名參數
    若一個默認參數在一個無默認值的參數前,那么該默認值只能通過使用命名參數調用該函數來使用
    class User(userName: String = "hjc", age: Int){
        // to do 
    }
    var user = User(age = 26)

    對于構造函數,Kotlin中類可有一個主構造函數 & 多個次構造函數,下面將詳細說明。

    2. 構造函數

    2.1 主構造函數

    • 屬于類頭的一部分 = 跟在類名后,采用 constructor 關鍵字

    • 不能包含任何的代碼。初始化的代碼放到以 init 關鍵字作為前綴的代碼塊中

    class 類名 constructor(參數名:參數類型){
    	init {       
        //...
        }
    }
    // 示例
    class User constructor(userName: String) {
    	init {       
        //...
        }
    }
    // 注:若主構造函數無任何注解 / 可見性修飾符,可省略 constructor 關鍵字
    class 類名(參數名:參數類型){
    	init {       
        //...
        }
    }
    // 示例
    class User (userName: String) {
    	init {       
        //...
        }
    }

    2.2 次構造函數

    • 必須加constructor關鍵字

    • 一個類中可存在多個次構造函數,傳入參數不同

    // 形式
    constructor(參數名:參數類型) :{函數體}
    // 示例
    class User(userName: String) {
        // 主構造函數
        init {
            println(userName)
        }
        // 次構造函數1:可通過this調主構造函數
        constructor() : this("hjc")
        // 次構造函數2:可通過this調主構造函數
        constructor(age: Int) : this("hjc") {
            println(age)
        }
        // 次構造函數3:通過this調主構造函數
        constructor(sex: String, age: Int) : this("hjc") {
            println("$sex$age")
        }
    }
    // 實例化類
    User("hjc") // 調用主構造函數
    User()      // 調用次構造函數1
    User(2)     // 調用次構造函數2
    User("male",26) // 調用次構造函數3

    3. 類的屬性

    Kotlin的類可以擁有屬性:關鍵字var(讀寫) / 關鍵字val(只讀)

    class User {
        var userName: String
        val sex: String = "男"
    }
    // 使用屬性 = 名稱 + 引用
    User().sex  // 使用該屬性 = Java的getter方法
    User().userName = "hjc"  // 設置該屬性 = Java的setter方法

    4. 可見性修飾符

    Android?Kotlin類怎么使用

    5. 繼承 & 重寫

    • 類似于Java,Kotlin是單繼承 = 只有一個父類

    • 區別:Kotlin使用冒號“ : ”繼承 & 默認不允許繼承(若想讓類可被繼承,需用open關鍵字來標識)

    // 用open關鍵字標識該類允許被繼承
    open class Food 
    // 類Fruits繼承類Food
    class Fruits : Food()
    • 對于子類重寫父類的方法,在Kotlin中,方法也是默認不可重寫的

    • 若子類要重寫父類中的方法,則需在父類的方法前面加open關鍵字,然后在子類重寫的方法前加override關鍵字

    // 父類
    // 在類 & 方法前都加了關鍵字open,為了被繼承 & 方法重寫
    open class Food {
        open fun banana() {}
    }
    // 子類 
    class Fruits : Food(){
    	// 重寫了父類的方法
        override fun banana() {
            super.banana()
        }
    }

    6. 特殊類

    下面將講解一些特殊的類:

    • 嵌套類(內部類)

    • 接口

    • 數據類

    • 枚舉類

    6.1 嵌套類(內部類)

    /**
     * 1. 嵌套類(內部類)
     * 標識:關鍵字inner
     * 使用:通過外部類的實例調用嵌套類
     */
     class User {
        var age: Int = 0
        inner class UserName {
        }
    }
    var userName: User.UserName  = User().UserName()

    6.2 接口

    /**
     * 2. 接口
     * 標識:關鍵字interface
     */
    // 聲明
    interface A{}
    interface B{}
    // 方法體
    // 接口中的方法可以有默認方法體,有默認方法體的方法可不重寫
    // 區別于Java:Java不支持接口里的方法有方法體。
    interface UserImpl{
        fun getName(): String // 無默認方法體,必須重寫
        fun getAge(): Int{    // 有默認方法體,可不重寫
            return 22
        }
    }
    // 實現接口UserImpl:需重寫getName() & 可不重寫getAge()
    class User :UserImpl{
        override fun getName(): String {
            return "hjc"
        }
    }
    // 實現接口:冒號:
    class Food : A, B {} // Kotlin是多實現
    class Fruits: Food,A, B {} // 繼承 + 實現接口

    6.3 數據類

     /**
      * 3. 數據類
      * 作用:保存數據
      * 標識:關鍵字data
     */
    // 使用:創建類時會自動創建以下方法:
    //      1. getter/setter方法;
    //      2. equals() / hashCode() 對;
    //      3. toString() :輸出"類名(參數+參數值)";
    //      4. copy() 函數:復制一個對象&改變它的一些屬性,但其余部分保持不變
    // 示例:
    // 聲明1個數據類
    data class User(var userName: String, var age: Int)
    // copy函數使用
    var user = User("hjc",26)
    var user1 = user.copy(age = 30)
    // 輸出user1.toString(),結果是:User(userName=hjc,age=30)
    // 特別注意
    // 1. 主構造方法至少要有一個參數,且參數必須標記為val或var
    // 2. 數據類不能用open、abstract、sealed(封閉類)、inner標識

    6.4 枚舉類

    /**
     * 4. 枚舉類
     * 標識:關鍵字enum
     */
     // 定義
     enum class Color {
        RED, GREEN, BLUE
    }
    // 為枚舉類指定值
    enum class Color(rgb: Int) {
        RED(0xFF0000), GREEN(0x00FF00), BLUE(0x0000FF)
    }

    關于“Android Kotlin類怎么使用”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    洛隆县| 泽州县| 淳化县| 鹤岗市| 安乡县| 安达市| 色达县| 牡丹江市| 科技| 巴中市| 搜索| 武陟县| 赤城县| 信丰县| 正定县| 蓬莱市| 广州市| 乌鲁木齐县| 昌平区| 崇明县| 天长市| 无为县| 东港市| 北川| 高碑店市| 大连市| 大庆市| 沙雅县| 黄龙县| 武鸣县| 榆树市| 壤塘县| 枣庄市| 囊谦县| 贺州市| 河津市| 甘肃省| 江陵县| 共和县| 灯塔市| 铅山县|