请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

断言的意义??

// 5 Customer类
class Customer {
// 多态在koa服务器后端大中项目中的使用
// 父类的引用接受不同类的子类对象
rentVechile(vechile: Vechile) {
vechile.calculateRent();//
if (vechile instanceof Vechile) {
// 父类对象变量断言成子类后,调用子类独有方法
(vechile as Bus).checkIsOverNum(true)// S94
}
}
}

let cust = new Customer()
cust.rentVechile(new Car(“本田”, “京G113”, 35, 400, “1”)) ==>老师,Car实例没有checkIsOverNum方法,那这样断言的意义是什么?
cust.rentVechile(new Bus(“大巴”, “京G115”, 89, 700, 16))

正在回答 回答被采纳积分+3

1回答

keviny79 2021-12-27 08:53:55

理解反了,如果所有子类都有的方法和属性,就不用断言了,直接写到父类,子类重写后,使用vechile变量来调用,而在这个rentVechile方法中,充分用到了多态的好处,但是如果偶尔这样的rentVechile方法里用到某个子类独有的方法,那么就需要把 父类对象变量 断言成子类对象后再去调用

0 回复 有任何疑惑可以回复我~
  • 提问者 zhangkaili #1
    老师说的很有道理,  if (vechile instanceof Vechile) 这段代码的作用是类型守卫吧,那是不是可以理解函数重载也可以实现类型断言的功能?
    回复 有任何疑惑可以回复我~ 2021-12-28 22:22:54
  • keviny79 回复 提问者 zhangkaili #2
    有时在函数重载的实现签名函数中 确实可以用类型守卫来判断类型,两者可共存
    回复 有任何疑惑可以回复我~ 2021-12-31 14:30:19

相似问题

登录后可查看更多问答,登录/注册

问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信