1. 程式人生 > >Kotlin程式設計之伴生物件,抽象類,密封類

Kotlin程式設計之伴生物件,抽象類,密封類

Kotlin程式設計相關知識點介紹

本篇概括:

  • 伴生物件
  • 抽象類
  • 密封類

伴生物件

package com.xingen.kotlin.day2017531

fun main(args: Array<String>) {
    Test.instance.test()
    Test.test1()
}
class  Test {
     fun test() {
         println("伴生物件的靜態呼叫物件,通過物件再呼叫方法")
    }
    companion object  Factory{ // 伴生物件
        var
instance =Test() fun test1(){ println("伴生物件的靜態呼叫方法") } } }

輸出結果:

伴生物件的靜態呼叫物件,通過物件再呼叫方法
伴生物件的靜態呼叫方法

可知

  • 伴生物件可以實現靜態呼叫,通過類名.屬性名或者類名.方法名進行呼叫。

抽象類

package com.xingen.kotlin.day2017531

fun main(args: Array<String>) {
    Test.instance.test()
     Test.instance.test1()
}

/**
 * 定義一個抽象類
 *
 *   1. 抽象類中有抽象方法,方法的實現。
 *   2. 抽象類和抽象方法是預設open關鍵字修飾的
 */
abstract class TestAbstract{ var v="抽象類中屬性" abstract fun test() fun test1(){ println("抽象類中方法的實現") } } class Test :TestAbstract(){ override fun test() { println("一個抽象類的子類中使用 $v") } companion object Factory{//伴生物件 var instance :TestAbstract=Test() } }

輸出結果:

一個抽象類的子類中使用 抽象類中屬性
抽象類中方法的實現

可知

  • 抽象類和抽象方法是預設open關鍵字修飾的
  • 抽象類有抽象方法和方法的實現,可以有成員屬性

密封類

通常與When語句一起使用,確保宣告到所有的情形,不需要使用else語句。

在一個原始檔(.kt),編寫以下程式碼:

package com.xingen.kotlin

/**
 * Created by ${新根} on 2017/5/24 0024.
 * 部落格:http://blog.csdn.net/hexingen
 */

fun main(str: Array<String>) {
    test( BaseClass.Test1() )
    test( BaseClass.Test2() )
    test( BaseClass.Test3 )
}

/**
 * 使用when表示式
 */

fun test(instance: BaseClass)=when(instance){
    is BaseClass.Test1-> instance.test()
    is BaseClass.Test2-> instance.test()
    is BaseClass.Test3->instance.test()
}
/**
 *
 * sealed修飾符修飾密封類。
 *
 * 密封類內部含有多個子類。
 */
sealed class BaseClass {

    class Test1 : BaseClass() {
        override fun test() {
            println("Test1例項")
        }

    }
    class Test2 : BaseClass() {
        override fun test() {
            println("Test2例項")
        }
    }
    object Test3 : BaseClass() {
        override fun test() {
            println("Test3例項")
        }
    }
    open fun test() {
        println("BaseClass例項")
    }
}

輸出如下:

Test1例項
Test2例項
Test3例項