和 Java 一样,Kotlin 也支持在类中声明类,在类中声明的类分为:
内部类使用 inner
关键字修饰,内部类会带有一个外部类的对象的引用,可以直接访问外部类成员:
//这么写是报错
class Outer {
var name: String = "张三"
class InnterClass {
fun test(): String {
return name
}
}
}
//需要加上 inner 关键字
class Outer {
var name: String = "张三"
inner class InnterClass {
fun test(): String {
return name
}
}
}
使用 enum
关键字来声明一个枚举类,枚举类的每个枚举常量都是该类的实例。
枚举类默认提供了以下两个方法:
和其他类不同的是,枚举类的父类并不是 Any
,而是 kotlin.Enum
类,所有枚举类都可以直接使用他父类中所包含的属性和方法,kotlin.Enum
类提供了下面的方法和属性:
属性:name —— 返回枚举实例的名称
fun main() {
val blue = Color.BLUE
println(blue.name)
}
enum class Color {
RED, BLACK, BLUE, GREEN, WHITE
}
//输出结果:BLUE
属性:ordinal —— 返回枚举实例的索引值
fun main() {
val blue = Color.BLUE
println(blue.ordinal)
}
enum class Color {
RED, BLACK, BLUE, GREEN, WHITE
}
//输出结果:2
方法:compareTo(E o): Int —— 用于两个枚举实例的位置比较,如果返回的是整数 x,表示参数实例位于比较实例的前面第 x 个位置。如果为负数,则位于后面第 x 个位置,如果是 0,表示相同位置
fun main() {
println(Color.BLUE.compareTo(Color.RED))
println(Color.BLUE.compareTo(Color.BLACK))
println(Color.BLUE.compareTo(Color.BLUE))
println(Color.BLUE.compareTo(Color.GREEN))
println(Color.BLUE.compareTo(Color.WHITE))
}
enum class Color {
RED, BLACK, BLUE, GREEN, WHITE
}
//输出内容:
2
1
0
-1
-2
方法:toString: String —— 作用和 name 属性类似
fun main() {
val blue = Color.BLUE
println(blue.name)
println(blue.toString())
}
enum class Color {
RED, BLACK, BLUE, GREEN, WHITE
}
//输出结果:
BLUE
BLUE