(1)关键字: constructor
init
类名后的括号加参数为 主构造方法
类的内部声明的构造方法为 从构造方法
在实现的类名后加上大括号并且添加默认形参 或者添加constructor 关键字加上大括号和默认形参,构造方法括号内的参数可以加上 val 或者 var的声明,这样在构造方法中就无需增加一个参数来初始化对象。
如:
// 有加关键字,有初始化块
class A constructor(a: String,b: Int) {
val a,b : String
init{
this.a = a
this.b = b
}
}
// 无关键字,有初始化块
class A(a: String,b: Int){
val a,b : String
init{
this.a = a
this.b = b
}
}
// 无关键字无初始化块
class A(a: String,b: String){
val a,b : String
a.this = a
b.this = b
}
// 省略构造方法名
class A{
constructor(a: String,b : String){
}
}
// 有添加参数默认的值
class A(a : String,b: String = "你好"){
val a,b : String
a.this = a
b.this = b
}
// 实例化类
a : A = A(a="a",b="你好")
(2)注意:
如果所有方法每个参数都有默认值,构造方法会默认生成一个不带参数的构造方法来使用所有的默认值,这代表着kotli可以使用无惨的构造方法来实例化类。
(3)如果想要初始化父类,可以在继承父类的同时,在继承的父类的名称后方加上括号传入父类的默认参数来初始化父类。
如:
open class A(val name : String){}
class B(name : String) : A(name){}
(4)如果你想要确保你的类不被其他代码实例化,必须把构造方法标记为 private
如:
class Secretive private constructor() {}
(5) 如果构造方法加入默认值,就可以省略大多数代码重复的构造方法,比如在传入 频率较高的参数加入默认值。