7.内部类
java内部类
public class Outer {
class Inner { }
static class StaticInner { }
}
kotlin内部类,默认是静态内部类,添加了inner后为非静态内部类
class Outer {
inner class Inner
class StaticInner
}
当要访问内部类时
fun main() {
//非静态内部类使用类的实例访问"Outer()"
val inner = Outer().Inner()
//静态内部类使用类名访问"Outer"
val staticInner = Outer.StaticInner()
}
匿名内部类
object :Runnable{
override fun run() {
}
}
匿名内部类支持实现多个接口
val runnableCloneable = object : Cloneable, Runnable {
override fun run() {
}
}
kotlin还支持localFunc和LocalClass
fun main() {
fun localFunc(){
println("Hello")
}
class LocalClass: Cloneable, Runnable{
override fun run() {}
}
}
8.数据类 data class
data class Book(val id: Long,
val name: String,
val author: Person)
在类前添加data关键字后就是数据类,他和普通类还有点区别,定义在主构造器中的属性又称为component,可以通过如下方式访问每一个属性
val id = book.component1()
val name = book.component2()
val author = book.component3()
因为有componet这个特性,所以还可以对数据类解构,解构后就可以直接使用这些属性了
val (id: Long, name: String, author: Person) = book