Kotlin的构造函数分为主构造器(primary constructor)和次级构造器(secondary constructor)。下面我们来看看他们的写法
1. Primary Constructor
1.1 写法规则
class 类名 constructor(形参1, 形参2, 形参3){}
class Person constructor(username: String, age: Int){
private val username: String
private var age: Int
init{
this.username = username
this.age = age
}
}
-
关键字
constructor
:在Java中,构造方法名须和类名相同;而在Kotlin
中,是通过constructor
关键字来标明的,且对于Primary Constructor
而言,它的位置是在类的首部(class header)而不是在类体中(class body)。 -
关键字
init
:init{}
它被称作是初始化代码块(Initializer Block
),它的作用是为了Primary Constructor
服务的,由于Primary Constructor
是放置在类的首部,是不能包含任何初始化执行语句的,这是语法规定的,那么这个时候就有了init
的用武之地,我们可以把初始化执行语句放置在此处,为属性进行赋值
1.2 可以简化代码的情形
当 constructor
关键字没有注解和可见性修饰符作用于它时,constructor
关键字可以省略(当然,如果有这些修饰时,是不能够省略的,并且 constructor
关键字位于修饰符后面)。那么上面的代码就变成:
class Person (username: String, age: Int){
private val username: String
private var age: Int
init{
this.username = username
this.age = age
}
}
初始化执行语句不是必须放置在 init
块中,我们可以在定义属性时直接将主构造器中的形参赋值给它:
class Person(username: String, age: Int){
private val username: String = username
private var age: Int = age
}
如果类不包含其他操作函数,那么连花括号也可以省略
class Person(private val username: String, private var age: Int)