前言
简单记录下一下Kotlin中子类和子类型的相关知识,方便自己查阅。
小结
子类是继承的概念,如果B继承A,则B就是A的子类。
如果需要使用类型A的变量时,可以使用类型B的变量来代替,则此时类型B就是A的子类型。
在需要使用时,用子类去替代父类,此时子类就是父类的子类型。
正文
子类是继承的概念,如果B继承A,则B就是A的子类。如果需要使用类型A的变量时,可以使用类型B的变量来代替,则此时类型B就是A的子类型。
一般情况下,编程语言只考虑了子类关系,子类说明是一个新类继承了父类,而子类型则是强调了新类具有父类一样的行为,这个行为不一定是继承。
继承与子类型
如果B类是A类的子类,则B就是A的子类型。当新类的行为与父类完全一致,在任何使用父类的场合,新类都表现一致的行为,此时可以使用继承。
open class Animal { fun bathe() { println(" 洗澡…") } } class Cat : Animal() fun work(animal: Animal): Unit { animal.bathe() }
var cat = Cat() work(cat)
Cat继承Animal,也就是说Cat是Animal的子类。
然后work()中传入cat,而且可以运行成功,说明Cat类是Animal类的子类型。
如果A类不是B类的子类型,则不可以代替B类做一些事情。
接口与子类型
如果B类实现了接口A,则B类就是接口A的子类型,例如String类实现了CharSequence接口,String类就是接口CharSequence的子类型。
参考文章
© 版权声明
草率了没记录完