Java学习入门笔记(方法覆盖1)

为何要方法覆盖:
当前程序存在的问题(设计上的问题)
鸟儿在执行move方法的时候,最好输出的结果是鸟儿在飞翔,但是当前的程序在执行move方法的时候输出的结果还是动物在移动,所以父类方法无法满足子类的业务需求。

public class override{
   public static void main(String[] args){
         Bird b = new Bird();
         b.move();
   }
}
//父类
class Animal{
   //移动
   public void move(){
     System.out.println("动物在移动!");
  }
}

//子类
class Bird extends Animal{
  //子类继承父类中,有一些行为可能不需要改进,有一些行为可能必须改进
  //因为父类中继承过来的方法已经无法满足子类的也无需求。
}

即当子类继承父类之后,继承过来的方法无法满足当前子类的业务需求时,子类有权利对这个方法进行重新编写,有必要进行“方法的覆盖”

方法覆盖:

public class override02{
   public static void main(String[] args){
     Bird b = new Bird();
     b.move();
  }
}

class Animal{
     public void move(){
        System.out.println("动物在移动!");
  }
}

class bird extends Animal{
  //对move方法进行方法覆盖override
  //此时最好将父类中的方法原封不动复制过来
  public void move(){
        System.out.println("鸟儿在飞翔!");
  }
}

重要结论:方法覆盖就是将继承过来的方法覆盖掉,
当子类对父类继承过来的方法进行方法覆盖之后,子类对象调用该方法的时候,一定执行覆盖之后的方法。

当我们代码如何编写时,在代码级别上构成了方法覆盖?
条件一:两个类必须要有继承关系。
条件二:重写之后的方法必须和之前的方法一模一样,具有相同的返回值类型,相同的方法名,相同的形式参数列表。
条件三:访问权限不能更低,可以更高。
条件四:重写之后的方法不能比之前的方法抛出更多的异常。

还有几个注意事项:
  注意1:方法覆盖,只是针对于方法,和属性无关。
  注意2:私有方法无法覆盖
  注意3:构造方法不能被继承,所以构造方法也不能被覆盖。
  注意4:方法覆盖只是针对于实例方法,静态方法覆盖没有意义。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值