【Java】16.面向对象之继承·下(扮演、重写、多态、super关键字、抽象类)

⑧继承与is-a(扮演编译)

除了可避免类间重复的行为定义外,子类和父类还有is-a(是一种)的关系,即子类是一种父类(羊是一种动物)。

这种关系体现在代码编译上,编译过程是=从右往左,一次只编译一行。

羊类继承了动物类,Animal  a=new Sheep();羊类是一种动物,即可以通过编译。反之则不对。

但下一行如果写Sheep sheep=a;则编译失败。a是Animal类声明的变量,而不一定是sheep所以失败。虽然在指向空间上,没有问题,但编译就是这样判定失败。

也可以强制转换让a扮演(Cast)sheep,这样sheep和a都参考至Sheep实例上,执行也不会有错。但如果你让a强制扮演其他子类,比如动物里的牛,编译通过后执行也会出错java.lang.ClassCastException,因为a参考的是Sheep实例,而不能扮演其他的子类。

 

⑨重写(Override)

1.概念:子类继承父类方法后的重写

2.注意:private和final方法不可重写;权限不可比父类更高,只能更低;返回类型可以为父类原方法的返回类型或者及子类

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值