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类来说确实是子类依然是泛型类,只要格式是正确的就可以了。