不知道如何測試下列語法可以參考如何使用Android Studio 測試資料?
- class多建構式
- 內部class用法
- interface
- enum class 用法
- sealed class 用法
- open 用法
class InfoClass( private var name: String, private var number: Int = 1 ) { fun getInfo() { println("name $name, number $number") } } @Test fun test2() { val test = InfoClass("Apple") test.getInfo() //打印 name Apple, number 1 val test2 = InfoClass("John", 30) test2.getInfo() //打印 name John, number 30 }
class MainClass { var data = 10 fun main() { val innerClass = InnerClass() data += innerClass.addFun() println("data = ${data}") } inner class InnerClass { var data = 1 fun addFun(): Int { return data + 1 } } } val mainClass = MainClass() mainClass.main() //打印 data = 12
@Test fun test() { println("execute success") callback.success() println("execute error") callback.error() /* execute success success execute error error */ } val callback = object : Callback { override fun success() { println("success") } override fun error() { println("error") } } interface Callback { fun success() fun error() }
@Test fun test() { var tag = EnumClass.Data1.getTag() println(tag)//打印 0 = Data1 tag = EnumClass.Data2.getTag() println(tag)//打印 1 = Data2 tag = EnumClass.Data3.getTag() println(tag)//打印 2 = Data3 var color = Colors.RED println("color = $color, color.color ${color.color}") //color = RED, color.color 0xFF0000 color = Colors.GREEN println("color = $color, color.color ${color.color}") //color = GREEN, color.color 0x00FF00 color = Colors.BLUE println("color = $color, color.color ${color.color}") //color = BLUE, color.color 0x0000FF } enum class EnumClass(private val index: Int) { Data1(0), Data2(1), Data3(2); fun getTag(): String { return "$index = $name" } } enum class Colors(val color: String) { RED("0xFF0000"), GREEN("0x00FF00"), BLUE("0x0000FF") } enum class RGB { RED, GREEN, BLUE } inline fun <reified T : Enum> printAllValues() { print(enumValues().joinToString { it.name }) } @Test fun test() { printAllValues() // 输出 RED, GREEN, BLUE //enum都有 name: String與 ordinal: Int }
//密封類不允許有非-private 構造函數(其構造函數默認為 private) sealed class SealedClass { data class onFinished(val data: Int): SealedClass() object onError: SealedClass() } fun createSealedClass(index: Int): SealedClass { when(index) { 0 -> { return SealedClass.onFinished(30) } else -> { return SealedClass.onError } } } @Test fun test() { val sealedClass = createSealedClass(0) when(sealedClass) { SealedClass.onError -> { } //data class 這裡需要使用 is is SealedClass.onFinished -> { //打印 30 println("data = ${sealedClass.data}") } } }
//open class 才可以給class繼承 //open fun 才可以繼承方法改寫 open class BaseClass { open fun test1(value: Int) { //打印 BaseClass test1 20 println("BaseClass test1 $value") } fun test2(value: Int) { //打印 BaseClass test2 25 println("BaseClass test2 $value") } } //使用override繼承 class TextClass: BaseClass() { override fun test1(value: Int) { super.test1(value) //打印 TextClass test1 30 println("TextClass test1 ${value+10}") } } @Test fun test() { val testClass = TextClass() testClass.test1(20) testClass.test2(25) } //最後打印 /* BaseClass test1 20 TextClass test1 30 BaseClass test2 25 */
上面皆是版本ext.kotlin_version = “1.5.0″測試的
更多相關可以參考這裡
相關文章
Android Kotlin 基本語法1 | Android Kotlin 基本語法2 |
1. var 可變變數 2. val 不可變更參數 3. Array 用法 4. ArrayList 用法 5. List的filter、sort、map、forEach 6. when 用法 7. fun 函式用法 8. if 表達式 9. for 表達式 10. 擴充函數(自定義函式) | 1. 操作符重載 2. 資料區間用法 3. map使用方法 4. 內部靜態變數 5. 靜態變數 6. 當資料如果是?型態宣告 7. 資料使用!!,強制將Int?轉Int 8. data class用法 9. 強制轉型 10. run、with、apply、also用法 |
Android Kotlin 基本語法4 | Android Kotlin Classes and Objects-1 |
1. 為基礎類型新增函式 2. Abstract技巧使用 3. throw使用方法 4. 利用let特性處理資料型態? 5. 快速初始化Array 6. 快速將兩個資料交換 7. 自定義待處理的fun 8. 幫loop設定標籤 | 1. 多個class與執行順序 2. init與constructor執行優先序 3. open繼承與禁止繼承 4. 不同的寫法,影響override能不能改變值 5. 繼承與當前Class執行順序 6. 由inner class去找parent的super 7. 繼承多個class時,選擇指定的Parent 8. private protected public internal修飾符差異 |
Android Kotlin Classes and Objects-2 | Android Kotlin 委託屬性 |
1. 幫List新增swap功能 2. 擴充外加函式,幫助程式簡化 3. T,多類型引入 4. T搭配in、out使用 5. 1個對象的object用法 6. 類型別名 7. 內聯類 8. 委託 | 1. 變數委託 2. lazy懶加載用法+String.split 3. 可觀察屬性observable 4. 委託內建map 5. 本地委託屬性,此方法可以減少加載 6. 委託屬性,唯獨與可讀可寫的方法 7. 將舊方法棄用 |
訂閱Codeilin的旅程,若有最新消息會通知。
廣告