您好,登錄后才能下訂單哦!
這篇文章主要介紹“Android Kotlin類怎么使用”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“Android Kotlin類怎么使用”文章能幫助大家解決問題。
// 格式 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中類可有一個主構造函數 & 多個次構造函數,下面將詳細說明。
屬于類頭的一部分 = 跟在類名后,采用 constructor 關鍵字
不能包含任何的代碼。初始化的代碼放到以 init 關鍵字作為前綴的代碼塊中
class 類名 constructor(參數名:參數類型){ init { //... } } // 示例 class User constructor(userName: String) { init { //... } } // 注:若主構造函數無任何注解 / 可見性修飾符,可省略 constructor 關鍵字 class 類名(參數名:參數類型){ init { //... } } // 示例 class User (userName: String) { init { //... } }
必須加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
Kotlin的類可以擁有屬性:關鍵字var(讀寫) / 關鍵字val(只讀)
class User { var userName: String val sex: String = "男" } // 使用屬性 = 名稱 + 引用 User().sex // 使用該屬性 = Java的getter方法 User().userName = "hjc" // 設置該屬性 = Java的setter方法
類似于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() } }
下面將講解一些特殊的類:
嵌套類(內部類)
接口
數據類
枚舉類
/** * 1. 嵌套類(內部類) * 標識:關鍵字inner * 使用:通過外部類的實例調用嵌套類 */ class User { var age: Int = 0 inner class UserName { } } var userName: User.UserName = User().UserName()
/** * 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 {} // 繼承 + 實現接口
/** * 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標識
/** * 4. 枚舉類 * 標識:關鍵字enum */ // 定義 enum class Color { RED, GREEN, BLUE } // 為枚舉類指定值 enum class Color(rgb: Int) { RED(0xFF0000), GREEN(0x00FF00), BLUE(0x0000FF) }
關于“Android Kotlin類怎么使用”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。