class InitClass constructor(var name: String, age: Int) {}
- constructor 可以省略
- var name 是属性(类内可访问),age 不带有var或val修饰 ,表示构造器参数,只能在构造器内访问。
init 块
class InitClass(var name: String, age: Int) {
fun ageToString() {
//不能访问不加var val 构造参数
//age
}
init {
name = "666"
println(name)
//age=8 //构造参数不能在 init 块 赋值
println(age)
}
}
继承
abstract class Parent{
}
class Son:Parent(){
}
open class Parent {
}
class Son : Parent() {
}
副构造器
class InitClass(var name: String, age: Int) {
//副构造器
constructor(name: String) : this(name, 0) {}
}
- 这里副构造器 name 不能使用 var 修饰,”‘var’ on secondary constructor parameter is not allowed”
- 副构造器需要调用主构造器(防止多条路径创建)
- 推荐使用主构造器默认参数,而不是使用副构造器,更加便捷易懂。