kotlin中的嵌套類和內部類和枚舉類

嵌套類(Nested Class)

Kotlin 的嵌套類是指定義在某一個類內部的類,嵌套類不能夠訪問外部類的成員。除非嵌套類變成內部類。

class Outter1 {

    val str:String = "this property is from outter1 class"

    class Nested {

        fun foo() = println("")
    }
}

fun main(args: Array<String>) {
    Outter1.Nested().foo()
}

 

如果嵌套類想訪問外部類的屬性,會報錯。

 

 內部類(Inner Class)

Kotlin 的內部類使用inner關鍵字標識,內部類能夠訪問外部類的成員。

class Outter2 {

    val str:String = "this property is from outter2 class"

    inner class Inner {

        fun foo() = println("$str")
    }
}

fun main(args: Array<String>) {
    Outter2().Inner().foo()
}

小結一下嵌套類和內部類:

  • 默認的是嵌套類
  • 嵌套類不持有外部類的引用,內部類持有外部類的引用
  • 嵌套類的創建方式:外部類.嵌套類()
  • 內部類的創建方式:外部類().內部類()

 

枚舉類

Java 中的枚舉類使用enum關鍵字修飾,而 Kotlin 中的枚舉類需要使用enumclass兩個關鍵字。

例如 Java 的枚舉類使用:

public enum Color {

    RED("紅色", 1), GREEN("綠色", 2), BLUE("藍色", 3);

    String colorName;
    int value;

    Color(String colorName, int value){
        this.colorName = colorName;
        this.value = value;
    }
}

它等價於下面的 Kotlin 枚舉類:

enum class Color constructor(var colorName: String, var value: Int) {

    RED("紅色", 1), GREEN("綠色", 2), BLUE("藍色", 3)
}

Kotlin 的枚舉類更加簡潔,枚舉類的屬性不需要寫在枚舉類內部。每一個枚舉都是枚舉類的實例。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章