构造
构造分为主构造和此构造
主构造
主构造直接写在类后面
修改Student类
class Student(val number: String, val grade: Int) : Person(){
...
}
1
2
3
4
在创建Student对象时,如下创建
val student = Student("1234", 90)
1
2
因之前Person还有name和age,下面修改Person类的主构造
open class Person(val name: String, val age: Int) {
...
}
1
2
3
4
此时Student报错,因为继承Person时,后边使用的是Person()无参构造,上面我们修改了Person的构造,则不存在无参构造了。
再修改Student
class Student(name: String, age: Int, val number: String, val grade: Int) : Person(name, age){
...
}
1
2
3
4
此时不在报错,声明方式如下
val student = Student("zjm", 20, "1234", 90)
1
2
在构造时需要进行特殊处理怎么办,Kotlin提供了init结构体,主构造的逻辑可在init中处理
open class Person(val name: String, val age: Int) {
init {
println("name is" + name)
println("age is" + age)
}
}
1
2
3
4
5
6
7
上述修改都为主构造,那如果类想有多个构造怎么办,此时需借助次构造
次构造
此时实现Student的另外两个构造
三个参数的构造,name,age,number,grade不传参默认为``0
无参构造,字符串默认为"",int默认为0
class Student(name: String, age: Int, val number: String, val grade: Int) : Person(name, age){
constructor(name: String, age: Int, number: String) : this(name, age, number, 0) {
}
constructor() : this("", 0, "", 0) {
}
...
}
1
2
3
4
5
6
7
8
9
10
创建如下:
fun main() {
val student1 = Student("zjm", 20, "123", 90)
val student2 = Student("zjm", 20, "123")
val student3 = Student()
}
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/Javachichi/article/details/131677550