青麦丨Java重写(Override)与重载(Overload)重写(Override)重写是子类对父类的允许访问的方法的实现过程进行重新编写,返回值和形参都不能改变
即外壳不变,核心重写
重写的好处在于子类可以根据需要,定义特定于自己的行为
也就是说子类能够根据需要实现父类的方法
重写方法不能抛出新的检查异常或者比被重写方法申明更加宽泛的异常
例如:父类的一个方法申明了一个检查异常IOException,但是在重写这个方法的时候不能抛出Exception异常,因为Exception是IOException的父类,只能抛出IOException的子类异常
在面向对象原则里,重写意味着可以重写任何现有方法
实例如下:TestDog
java文件代码:classAnimal{publicvoidmove(){System
println("动物可以移动");}}classDogextendsAnimal{publicvoidmove(){System
println("狗可以跑和走");}}publicclassTestDog{publicstaticvoidmain(Stringargs[]){Animala=newAnimal();//Animal对象Animalb=newDog();//Dog对象a
move();//执行Animal类的方法b
move();//执行Dog类的方法}}以上实例编译运行结果如下:动物可以移动狗可以跑和走在上面的例子中可以看到,尽管b属于Animal类型,但是它运行的是Dog类的move方法
这是由于在编译阶段,只是检查参数的引用类型
然而在运行时,Java虚拟机(JVM)指定对象的类型并且运行该对象的方法
因此在上面的例子中,之所以能编译成功,是因为Animal类中存在move方法,然而运行时,运行的是特定对象的方法