前言

简单记录下一下Kotlin子类子类型的相关知识,方便自己查阅。

小结

  1. 子类是继承的概念,如果B继承A,则B就是A的子类。

  2. 如果需要使用类型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) 
  1. Cat继承Animal,也就是说Cat是Animal的子类。

  2. 然后work()中传入cat,而且可以运行成功,说明Cat类是Animal类的子类型。

如果A类不是B类的子类型,则不可以代替B类做一些事情。

接口与子类型

如果B类实现了接口A,则B类就是接口A的子类型,例如String类实现了CharSequence接口,String类就是接口CharSequence的子类型。

参考文章

  1. 《Kotlin从基础到实战》

相关文章

1 条评论

  • biumall.com站长
    biumall.com站长 管理员

    草率了没记录完

    广东深圳市
    回复