class People(val firstName: String, val lastName: String) {
//在类中的方法可以使用主构造器中的变量
}
也就是说,主构造器就相当于是定义变量及初始化
多构造参数之间的关系
class text (vara : Int){
var s = a
constructor(b:Int,c:Int):this(b){
}
}
可以有多个构造函数,但是每个次构造都必须直接或间接调用主构造函数
类中方法可以直接使用主构造的参数,不能使用次构造函数的参数
类的修饰符
open // 类可继承,类默认是final的
internal // 同一个模块中可见
kotlin继承
如果子类有主构造函数, 则基类必须在主构造函数中立即初始化。
open class Person(var name : String, var age : Int){// 基类}class Student(name : String, age : Int, var no : String, var score : Int) : Person(name, age) {
}
如果子类没有主构造函数,则必须在每一个二级构造函数中用 super 关键字初始化基类,或者在代理另一个构造函数。初始化基类时,可以调用基类的不同构造方法。
父类方法需要被重写的话必须加上open关键字
当继承的多接口有相同的方法时
interface A {
fun foo()
fun bar()
}
interface B {
fun foo()
fun bar()
}
class D : A, B {
overridefun foo() {
super<A>.foo()
super<B>.foo()
}
overridefun bar() {
super<B>.bar()
}
}