<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
Kotlin被Google官方認為是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中類可有一個主建構函式 & 多個次建構函式,下面將詳細說明。
class 類名 constructor(引數名:引數型別){ init { //... } } // 範例 class User constructor(userName: String) { init { //... } } // 注:若主建構函式無任何註解 / 可見性修飾符,可省略 constructor 關鍵字 class 類名(引數名:引數型別){ init { //... } } // 範例 class User (userName: String) { init { //... } }
// 形式 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方法
// 用open關鍵字標識該類允許被繼承 open class Food // 類Fruits繼承類Food class Fruits : Food()
// 父類別 // 在類 & 方法前都加了關鍵字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) }
本文全面介紹了Kotlin語法中的類,更多關於Android Kotlin類語法的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45