方法的覆盖

     方法的覆盖

场景:
  子类拓展了父类,可以获得父类的部分方法和成员变量.可是当父类的某个方法不适合类本身的特征时,此时怎么办
如:企鹅和鸵鸟是鸟类中的一个特殊品种,所以企鹅/鸵鸟类是鸟类的一个子类,但是鸟类有飞翔的功能,但是对应企鹅/鸵鸟,
飞翔的行为显然不适合它.

此时怎么办?



方法覆写的原则(一同两小一大);
一同:
①   实例方法签名必须相同.(方法签名=方法名+方法的参数列表)
两小:
②     子类方法的返回值类型是和父类方法的返回值类型相同或者是其子类.
         子类可以返回一个更加具体的类
③    子类方法中声明抛出的异常和父类方法声明抛出的异常类型相同或者是其子类.
# 子类方法中声明抛出的异常小于或者等于父类方法声明抛出异常类型;
#子类方法中可以同时声明抛出多个属于父类方法声明抛出异常类的子类


一大:
④  子类方法的访问权限比父类方法访问权限更大或相等;


判断是否是覆写方法的 必杀技:@Override标签:若方法是覆写方法,在方法前或上贴上该标签,编译通过,否则,编译出错.
  
只有方法存在覆盖的概念,字段没有覆盖;


 方法覆盖解决的问题:当父类的某一个行为不符合子类具体的特征的时候,此时子类需要重复定义父类的方法,并重写方法体

=======================================================================================

方法重载:Overioad
方法重写:Override
批判:本身二者一点关系都没有,仅仅只是因为名字很像.
---------------------------------------------------------------------------------
方法重载:
    作用:解决了同一个类中,相同功能的方法名不同的问题;
          既然是相同的功能,那么方法的名字就应该相同
   规则:两同一不同
             同类中,方法名相同,方法参数列表不同那个(参数类型,参数个数,参数顺序)
方法重写:
    作用 ; 解决子类继承父类之后,可能父类的某一个方法不满足子类的具体特征,此时需要重新在子类中定义该方法,并重写方法体
     规则:一同两小,一大
           一同:父类和子类的方法签名是相同的,所以直接拷贝父类中方法的定义到子类中,再重写方法体,就ok了,

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值