class Person constructor(firstName: String){init{print("我是init代码块,等同于主构造函数代码块")}constructor(firstName: String, lastName: String):this(firstName){print("我是次要构造函数,我可以有自己的代码块")}}
// 基类openclass Base {}// 派生类class Person :Base(){}
如果派生类没有没有主构造函数,则每个次构造函数必须使用 super 初始化基类
// 基类openclassBase(firstName: String){constructor(firstName: String, lastName: String){}}// 派生类没有主构造函数,使用 super 初始化基类class Person : Base {constructor(firstName: String):super(firstName){}constructor(firstName: String, lastName: String):super(firstName, lastName){}}
派生类想重写父类的方法,父类方法必须使用 open 关键字修饰,子类方法必须使用 override 修饰,override默认是开放的,如果想禁止覆写,使用final关键字 ps:open 修饰方法所在类,如果没有使用open修饰类,不会起作用,
// 基类openclass Base {openfunhello(){println("base")}funhello2(){println("base")}}// 派生类class Person :Base(){// hello方法可以被重写overridefunhello(){}// hello2方法不可以被重写,因为没有使用 open 修饰}