1. class InitClass constructor(var name: String, age: Int) {}
  • constructor 可以省略
  • var name 是属性(类内可访问),age 不带有var或val修饰 ,表示构造器参数,只能在构造器内访问。

init 块

  • 可以有多个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 修饰父类
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”
  • 副构造器需要调用主构造器(防止多条路径创建)
  • 推荐使用主构造器默认参数,而不是使用副构造器,更加便捷易懂。