对象声明 object
object MySingle {
fun myAdd(num1: Int, num2: Int) {
println("测试${num1} + ${num2} = ${num1 + num2}")
}
val myName: String
get() = "小王"
}
对象声明的初始化过程是线程安全的.
直接调用
MySingle.myAdd(1,2)
Log.d("测试","name:"+MySingle.myName)
可以有超类型
object MySingle: BaseSingle() {
fun myAdd(num1: Int, num2: Int) {
println("测试${num1} + ${num2} = ${num1 + num2}")
}
val myName: String
get() = "小王"
}
open class BaseSingle{}
伴生对象
类内部声明可用 companion 关键字标记
class MyClass {
companion object Factory {
fun create(): MyClass = MyClass()
}
}
构造函数
一个类可以有一个 主构造函数 或多个 次构造函数
主构造函数
class Person constructor(firstName: String) { ... }
主构造函数不能包含任何代码,初始化放在 init 初始化块中
class InitOrderDemo(name: String) {
val firstProperty = "First property: $name".also(::println)
init {
println("First initializer block that prints ${name}")
}
val secondProperty = "Second property: ${name.length}".also(::println)
init {
println("Second initializer block that prints ${name.length}")
}
}
次构造函数
前缀 constructor
class Person {
constructor(parent: Person) {
parent.children.add(this)
}
}