子类主构造函数继承同一个父类不同的写法

34 阅读1分钟
open class Person<T>(open var value: T) {

}

class Student<T>(override var value: T) : Person<T>(value) {
}
class Teacher(name:String):Person<String>(name){

}
class Student1(value:String,age:Int):Person<String>(value){
    
}

问题一:

为什么Student子类需要有val或者var关键字,而Teacher子类却不需要val或者var关键字?

因为在kotlin里边var或者val也是重写的一部分,所以这个关键字是必须的,但是在Teacher(包括Student1)里边没有重写的需求,只是需要将父类的主构造函数初始化,其他的就是子类想干什么的就干什么了。

问题二

对于泛型类,子类依然可以是泛型类吗?

对于Teacher类来说确实是子类依然是泛型类,只要格式是正确的就可以了。