最近刚从java切换到kotlin以前java的构造函数如果是继承的话,基本都是ctrl + enter方式快速生成构造函数,在kotlin中这样不行了,下面总结下kotlin的构造函数方式,以及与java的区别
java一般构造函数如下
public class Person {
public String name;
Person(String name){
this.name = name;
}
}
构造函数与类名相同。
在kotlin中构造函数分为
- 主构造函数
- 次构造函数
一、主构造函数
主构造函数是类头的一部分,跟在类名之后
class Person constructor(name:String){
}
如果主构造函数没有任何注解或者可见性修饰符,可以省略这个 constructor 关键字。
class Person (name:String){
}
注意:主构造函数不能包含任何代码,初始化代码可以放到以init关键字作为前缀的初始化块中。
如下
1.在init中初始化
class Person (name:String){
val name:String
init {
this.name = name
}
}
主构造器的参数可以在初始化块中使用,也可以在类体声明使用
2.在类的声明体内初始化
class Person (name:String){
val name = name
}
kotlin还有更简介的方式如下
3.在构造器中定义属性
class Person (val name: String){
}
二、次构造函数
次构造器前缀必须有关键字constructor
class Person (name: String , age:Int){
private val name: String = name
private var age: Int = age
private var address: String = ""
constructor(username: String, age: Int, address: String) : this(username ,age) {
this.address = address
}
}
如果类已经声明了主构造器,在次构造器中需要委托给主构造函数,上面例子中使用this(username ,age),委托给主构造器。
在即有主构造器, 又有次构造器的情况,次构造器最终都是调用了主构函数来创建对象
网友评论