Android- Kotlin (主构造函数、次构造函数)

2020-05-13  本文已影响0人  是刘航啊

博主也是刚开始学习 Kotlin 没多久,本文是对《第一行代码》- 第三版中主构造函数和次构造函数的总结。非常推荐这本书作为 Kotlin 入门,建议可以自己把书中的例子自己敲一遍。

Kotlin 中的继承
open class People {

}

Java 中类是可以默认继承的,但是 Kotlin 不一样。如果想要在 Kotlin 中的类被继承,那么需要使用关键字 open。

class Student : People() {

}

Java 中继承使用 extends,Kotlin 中继承使用 " : " 来处理。Java 中类继承不需要括号, Kotlin 中类继承需要括号。


主构造函数
//不带参数
class Student (): People() {

}

每个类有个默认不带参数的主构造函数。
主构造函数的特点-> 没有函数体,直接定义在类名后。

//带参数
class Student(sno: String, grade: Int) : People() {

}

Java 和 Kotlin 一样,子类的构造函数必须调用父类的构造函数。
上面代码中 Student 类初始化主构造函数时候会调用 People 类的无参主构造函数,即使没有参数也不能省略,所以这也是 Kotlin 中继承类有括号的原因。

class Student(sno: String, grade: Int, name: String, age: Int) : People(name, age) {

}

当父类主构造函数带参数时,由于子类必须实现父类主构造函数,所以可以在子类的主构造函数中加入父类构造函数需要的参数。


次构造函数
class Student(sno: String, grade: Int, name: String, age: Int) : People(name, age) {

    constructor(name: String, age: Int) : this("", 0, name, age) {

    }

    constructor() : this("", 0) {

    }

}

1-> 次构造函数通过 constructor 关键字定义
2-> Kotlin 规定所有次构造函数必须调用主构造函数

有没有很像 Java 中的重载
class Students : Persons {
    constructor(name: String, age: Int) : super(name, age) {

    }
}


open class Persons {
    constructor(name: String, age: Int) {

    }
}

子类没有主构造函数所以不用带括号,同理父类也是一样。
this 关键字和 super 关键字也会比较好理解。


主构造函数和次构造函数大概就介绍到这里了,如果有什么写得不对的地方欢迎指出,如果你觉得这篇文章对你有帮助就帮忙点个赞吧。
上一篇下一篇

猜你喜欢

热点阅读